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

1 篇文章 0 订阅

参考链接:

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

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值