我有以下模块:
主文件
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:赋值前引用局部变量 'FOO'”并且不打印“foo”
看起来解释器在实际运行代码之前正在寻找当前范围内的分配。