當我在我公司的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'語句。 –