当我在我公司的Python项目执行测试脚本的另一个UnboundLocalError,我得到了一个错误如下:在Python2.7
UnboundLocalError: local variable 'a' referenced before assignment
我写了一些简单的代码来重现问题,它有2个文件。
vars.py文件:
#!/usr/bin/env python
a = 'aaa'
script.py文件:
#!/usr/bin/env python
from vars import *
def myFunc1():
print a
if False:
a = '111'
print a
myFunc1()
执行代码:
$ python --version
Python 2.7.10
$ python script.py
Traceback (most recent call last):
File "script.py", line 13, in <module>
myFunc1()
File "script.py", line 6, in myFunc1
print a
UnboundLocalError: local variable 'a' referenced before assignment
$
我GOOGLE了UnboundLocalError
,发现一些有用的信息,如:
UnboundLocalError: local variable 'L' referenced before assignment Python
根据以上2个问题的答案,如果我在script.py文件中添加了def myFunc1():
线global a
后,该错误消失。
我不明白的是从myFunc1
去除if
条件也使它发挥作用的事情...
的Python在编译time_ _statically决定局部变量。无论何时在函数的任何位置有一个赋值变量,该变量在_whole函数body_中被认为是本地的,包括第一个'print'语句。 –