- 两者的功能不同,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