我有这样的事情:
def a():
#do something
foo = 0
def b():
foo += 2
# do something
b()
#do something
a()
但它说
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
a()
File "<pyshell#5>", line 7, in a
b()
File "<pyshell#5>", line 5, in b
foo += 2
UnboundLocalError: local variable 'foo' referenced before assignment
如何在foo
不将其设为全局的情况下进行访问?
对foo
in的赋值b
使其成为局部变量,与 in 中的同名变量无关a
。使用nonlocal
语句来改变它。
def a():
#do something
foo = 0
def b():
nonlocal foo
foo += 2
# do something
b()
#do something
现在,foo
在b
相同变量foo
中a
。nonlocal
类似于global
,但使用包含名称的最接近的封闭范围,foo
而不是直接跳转到全局范围。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句