出现此情况原因:
1、说明x在其他函数中定义过,但x不是全局变量。(或者是多线程调用本函数,因为共享变量,也会报此错误)
2、变量在本函数中,在其调用之前的if语句中被定义过,但由于某次执行,不满足条件,使得x未进入过if语句,从而使得a未真正意义上被定义,所以报此错误。
比如:
def func1():
x = 88 # 定义x
def func2():
c = 5
if c > 10:
x = 3
print(x) # 因为x在其他函数中已定义且不是全局变量,在本函数中存在,但实质上未被定义,所以会报此错误
func2() # 调用函数
报错如下:
---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
<ipython-input-1-7cd0b1f55a26> in <module>
7 x = 3
8 print(x) # 因为x在其他函数中已定义且不是全局变量,在本函数中存在,但实质上未被定义,所以会报此错误
----> 9 func2()
<ipython-input-1-7cd0b1f55a26> in func2()
6 if c > 10:
7 x = 3
----> 8 print(x) # 因为x在其他函数中已定义且不是全局变量,在本函数中存在,但实质上未被定义,所以会报此错误
9 func2()
UnboundLocalError: local variable 'x' referenced before assignment