>>> def bar():
abc = 0
def run():
global abc
abc += 1
print abc
return run
>>> ccc = bar()
>>> ccc()
Traceback (most recent call last):
File "<pyshell#52>", line 1, in <module>
ccc()
File "<pyshell#50>", line 5, in run
abc += 1
NameError: global name 'abc' is not defined
如代码所示,变量&#39; abc&#39;在函数&#39; bar&#39;中定义,这是在&#39; bar&#39;中定义的函数。想要访问&#39; abc&#39;,我试图在使用前使用全局声明,但它似乎是内部功能&#39; run&#39;只搜索&#39; abc&#39;在最外层的命名空间中。所以,如何访问&#39; abc&#39;在功能&#39;运行&#39;?
答案 0 :(得分:1)
如果您使用的是3.x,则可以使用“nonlocal abc”而不是“global abc”
def bar():
abc = 0
def run():
nonlocal abc
abc += 1
print (abc)
return run
2.x中的您可以使用以下样式
def bar():
abc = 0
def run(abc=abc):
abc += 1
print abc
return run