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