らんだむな記憶

blogというものを体験してみようか!的なー

くろーじゃ?

さて、closureいっとくかと、

def hoge():
    val = 2
    def fuga():
        val += 1
    for i in range(3):
        fuga()
    print("%d" % val)

するかーと思ったら、UnboundLocalError とかいいおる。おぃおぃ、せにょり~た、冗談きついよー。ってpython2.xはこんなもんだとっ!?

def hoge():
    val = [2]
    def fuga():
        val[0] += 1
    for i in range(3):
        fuga()
    print("%d" % val[0])

とかするんだと。泣きたくなるなこれ。
python3.xなら

def hoge():
    val = 2
    def fuga():
        nonlocal val
        val += 1
    for i in range(3):
        fuga()
    print("%d" % val)

すれば良いらしい。ほんっと泣きたくなるな。
なんか全然美しくないな。