- 两者的功能不同,global关键字修饰后标识该变量是全局变量,对该变量修改就是修改全局变量,而nonlocal关键字修饰后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该变量,nonlocal会发生位置错误。
- 两者的使用范围不同,global关键字可以用在任何地方,即使该变量未定义也可以直接使用,nonlocal关键字只能用于嵌套函数中,并且该变量已经定义过。
x = 1
def test():
global x #声明x为全局变量x
x = 2
test()
print(x)
--------------
2def make_counter(): # make_counter是个闭包
count = 0
def counter():
nonlocal count # 如果外层count不存在,此处会报错
count += 1
return count
return counter 




Comments | NOTHING