关键字global和nonlocal的用法

1.首先,要明确 nonlocal 关键字是定义在闭包里面的(不定义在闭包里会抛异常SyntaxError: nonlocal declaration not allowed at module level)

在闭包里面加入nonlocal关键字进行声明。当使用 nonlocal 时,就声明了该变量不只在嵌套函数inner()里面才有效, 而是在整个大函数里面都有效

2.global 是对整个环境下的变量起作用,而不是对函数内的变量起作用。

 

总结:nonlocal与global的区别

nonlocal:如果在闭包内给该变量赋值,那么修改的其实是闭包外那个作用域中的变量。

global:用来表示对该变量的赋值操作,将会直接修改模块作用域里的那个变量。(nonlocal与global互为补充)

原文地址:https://www.cnblogs.com/GumpYan/p/12284766.html