出现局部变量在赋值前被引用错误的原因及解决办法

运行

a = 13  
def func():
    a = a - 1
    print(a)
print(a)
func()

会出现local variable ‘a’ referenced before assignment的错误是因为全局变量与局部变量同名时,当你想在函数内部中修改外部变量的值,python首先会认为该变量是局部变量,函数内部没有定义局部变量a=value,而内部作用域想要改变外部作用域的值,就要用到global关键词。

a = 13  
def func():
    global a
    a = a - 1
    print(a)
print(a)
func()
print(a)

这样我们就可以在函数中对a进行修改了

当然,也可以这样:

a = 13  
def func():
    b = a - 1
    print(b)
print(a)
func()

全局变量与局部变量不同名,对a仅仅进行读取是没有问题的,这里定义了一个局部变量b

还有一个更简单的操作,就是在函数中,对a再次进行赋值,告诉python,局部变量a=13

a = 13  
def func():
	a = 13
    a = a - 1
    print(a)
print(a)
func()

小结:如果想要在函数内部修改全局变量的话,要告诉python这个变量是全局变量,不要把它看成局部变量,用 global+变量名。否则,python会把该变量看成局部变量,对变量进行修改时,会报错局部变量在赋值前引用了。

    原文作者:LLLLLLLLLLLLIU
    原文地址: https://blog.csdn.net/weixin_44851971/article/details/106205646
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞