local variable 'x' referenced before assignment

出现此情况原因:

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
原文地址:https://www.cnblogs.com/jaysonteng/p/12987384.html