PYTHON报错UnboundLocalError: local variable 'xxx' referenced before assignment

参考链接:

https://www.cnblogs.com/zhaijiahui/p/8398480.html

报错:

UnboundLocalError: local variable 'xxx' referenced before assignmen

局部变量xxx在被引用前没有被定义

解析:

当在函数的外部定义了全局变量n的时,再在函数内对全局变量n进行操作时可能引发这样的问题,主要是PYTHON解释器对变量的作用范围机制引起的。如果一个全局变量在函数内被重新定义过,再在函数内使用变量则默认为局部变量;如果在函数内没有被定义,直接使用会被视为全局变量。如果需要在函数内定义(修改)全局变量,则要先用global进行声明。

案例:

a = 1


def test(x):
    if x == 1:
        pass
    return a * x

print(test(2))

2

 

a = 1


def test(x):
    if x == 1:
        a = a + 1
    return a * x

print(test(2))

UnboundLocalError: local variable 'a' referenced before assignment

 

a = 1


def test(x):
    global a
    if x == 2:
        a = a + 1
    return a * x

print(test(2))

4

 

拓展:

如果是LIST列表,在全局中声明后,在函数中访问其中的一个项则不用进行全局声明,因为不存在歧义。

a = [0,1,2,3,4,5]


def test(x):
    if x == 2:
        a[0] = 1
    return a[0]*x

print(test(2))

返回2

你可能感兴趣的:(python,T)