首页 > 编程语言 > Python > Python 报错: local variable 'xxx' referenced before assignment
2019
03-08

Python 报错: local variable 'xxx' referenced before assignment

UnboundLocalError: local variable 'xxx' referenced before assignmen

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

 

问题原因:

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

 

案例:

a = 1

def test(x):

if x == 1:

pass

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))

 

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

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

def test(x):

if x == 2:

a[0] = 1

return a[0]*x

print(test(2))

最后编辑:
作者:搬运工
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。