参考链接:
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