次のモジュールがあります。
main.py
import my_import
my_import.a_func()
my_import.py
FOO = "foo"
BAR = []
def a_func():
BAR.append("bar") #ok
FOO = FOO + "foo" #UnboundLocalError:
#local variable 'FOO' referenced before assignment
これはおそらくインポートによるものですが、どうですか?
[編集]
私が得た答えから、重要なのはインポートではありませんが、次のことはまだ奇妙です:
FOO = "foo"
BAR = []
def a_func():
BAR.append("bar")
print(FOO)
a_func()
--> 「foo」を出力します
FOO = "foo"
BAR = []
def a_func():
BAR.append("bar")
print(FOO)
FOO = FOO + "foo"
a_func()
--> 「UnboundLocalError: local variable 'FOO' referenced before assignment」で失敗し、「foo」を出力しません
インタープリターは、実際にコードを実行する前に、現在のスコープで割り当てを探しているようです。