さて、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)
すれば良いらしい。ほんっと泣きたくなるな。
なんか全然美しくないな。