可能重复:
在python中的赋值错误之前引用
我在 python 中遇到了一个奇怪的错误。以下 ipython 日志总结了它:
In [10]: def confused(stuff):
....: print huh
....: return stuff
....:
In [11]: confused(87)
0
Out[11]: 87
In [12]: def confused(stuff):
....: print huh
....: huh += 1
....: return stuff
....:
In [13]: confused(9)
---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
/home/max/verk/btr-email/build/x86_64/bin/ipython in <module>()
----> 1 confused(9)
/home/max/verk/btr-email/build/x86_64/bin/ipython in confused(stuff)
1 def confused(stuff):
----> 2 print huh
3 huh += 1
4 return stuff
UnboundLocalError: local variable 'huh' referenced before assignment
有效的函数和抛出错误的函数之间的唯一区别是 +=1 行,即使这样,它也会在之前有效的行上抛出错误!如果我在方法的第二个版本中global huh
引用之前放置,它也不会引发错误。huh
为什么添加一行我向变量添加一个突然将其从全局变量更改为局部变量?