/ / python3 closure [conficate] - python、python-3.x、closuresで混乱しています

python3 closureによって混乱しています。[複製] - python、python-3.x、closures

このコード

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は2
def gen(x):
def f():
nonlocal x # add this line
x += 1
return x

return f

print(gen(1)())