このコード
def gen(x):
def f():
return x
return f
print(gen(1)())
うまくいく。
しかし、私はこのコードを実行すると、
def gen(x):
def f():
x += 1
return x
return f
print(gen(1)())
私はエラーが表示される
UnboundLocalError:割り当て前に参照されているローカル変数 "x"
それがどうなったのか? Python3のクロージャを理解する方法。
回答:
回答№1は2def gen(x):
def f():
nonlocal x # add this line
x += 1
return x
return f
print(gen(1)())