运行
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会把该变量看成局部变量,对变量进行修改时,会报错局部变量在赋值前引用了。