python global 和 nonlocal关键字
global 是把某个变量变成全局变量
场景1:当函数里面想改变一个不可变的数据类型
num = 1
def func():
print(num)
func()
=>输出为 1
但是当我们想在函数内改变这个num时,会报错。
num = 1
def func():
num += 1
print(num)
func()
=>UnboundLocalError: local variable 'num' referenced before assignment
此时我们就可以用global num来声明全局变量
num = 1
def func():
global num
num += 1
print(num)
func()
=> 输出为2
场景2:在函数外想使用函数内的变量
def func():
num = 1
func()
print(num)
=> NameError: name 'num' is not defined
此时也可以使用global
def func():
global num
num = 1
func()
print(num)
=> 输出为1
nonlocal 内函数中使用外函数的变量
def outer():
num = 2
def inner():
print(num)
return inner()
outer()
=> 输出为2
同样如果你想改变这个num,对不起,不行。此时就可以用nonlocal
def outer():
num = 2
def inner():
nonlocal num
num += 1
print(num)
return inner()
outer()
=> 输出为3
可以理解为如果内函数想改变外函数的变量的值,那么就使用nonlocal关键字
浙公网安备 33010602011771号