对Python3闭包感到困惑
这段代码
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'
这是怎么回事呢?
还有,如何理解 Python 3 中的闭包?
1 个回答
2
def gen(x):
def f():
nonlocal x # add this line
x += 1
return x
return f
print(gen(1)())
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。