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进行增加,对于一次性增加多个的,只能靠遍历添加了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值