今天早上我的咖啡可能还不够强,但这种行为现在让我感到困惑:
>>> 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 = 'bar'
。
有人可以向我解释这里发生了什么吗?
答案 0 :(得分:2)
因为在a
中设置了func2
,所以Python认为它是一个局部变量。在global a
语句前添加print
声明:
def func2():
global a
print a
a = 'bar'