重複の可能性:
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行であり、それでも、以前は動作していた行にエラーをスローします。また、メソッドの2番目のバージョンでglobal huh
参照する前に配置しても、エラーはスローされません。huh
変数に1行追加すると、突然グローバル変数からローカル変数に変更されるのはなぜですか?