Python的变量作用域的意外行为
我对Python的变量作用域系统如何工作有些困惑。比如,我有这样一种情况:
a = 10
def test():
print(a)
然后一切都按照我的预期进行。Python首先查找一个局部变量a
,找不到它,然后查找一个全局变量。
然而,在这样一种情况下:
a = 10
def test():
print(a)
a += 1
print(a)
Python抛出了一个UnboundLocalError异常,显然是源自第3行(print(a)
)。对我来说,至少在这一行之前,什么都没有改变,我不明白为什么会出现异常。