也许今天早上我的咖啡不够浓,但这种行为现在让我很困惑:
>>> a = 'foo'
>>> def func1():
... print a
...
>>> def func2():
... print a
... a = 'bar'
...
>>> func1()
foo
>>> func2()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in func2
UnboundLocalError: local variable 'a' referenced before assignment
(请注意,print a
语句引起func2()
中的错误,而不是{
有人能给我解释一下这是怎么回事吗?在
因为
a
是在func2
内设置的,Python假设它是一个局部变量。将global a
声明放在print
语句之前:另请参见this question about Python scoping rules。在
相关问题 更多 >
编程相关推荐