python 函数中的全局变量使用(错误:UnboundLocalError: local variable ‘a‘ referenced before assignment)

遇到了错误:UnboundLocalError: local variable ‘a’ referenced before assignment
代码:

a = 1
b = 2

def test1():
    print("a=",a)
    print("b=",b)

def test2():
    a += 1
    b += 1
def test3():
    a = 3
    print(a)
test1()
test2()
test3()
test1()

这里test1函数只打印a的值不会出错,test3函数中进行打印显示a值为3,但是并未改变全局变量的值,在test3中的a是个局部变量,但是在test2中会出错,因为此时的a要在test2中进行赋值,作为全局变量不能在这个局部进行赋值,但是作为局部变量在该函数中又没有初值无法自增,所以出错了

同理,对于以下代码:

li = [1,2,3,4]

def test2():
    if li != []:
        li = []
        #li.clear()
        print(li)

同样会报错,原理一样,python解释器分不清li是局部变量还是全局变量了,去掉if li != []:或者li=[]都可以,化解错误,如果采用li.clear()的方式也可以完成这项工作,只是不能赋值
对于增加数据的也可以用append进行增加,对于一次性增加多个的,只能靠遍历添加了

你可能感兴趣的:(错误记录,python,python)