参考资料:
https://zhuanlan.zhihu.com/p/467568306
global
global语句是适用于当前整个代码块的声明,它是全局变量的标识符。如果某名字在局部名字空间中没有定义, 就自动使用相应的全局名字。
global---将变量定义为全局变量,可以通过定义为全局变量,实现在函数内部改变变量值。如果函数中要读取一个外层(这里是global)的变量,不适用globa也可以“读取”该变量;若要在函数内修改该global变量,则需要用global语句,函数对该变量的修改也会体现到global作用域。
如果全局变量是一个可变类型,那么在函数提内修改变量时不需要使用global。如果是不可变类型,则需要使用global
nonlocal
nonlocal指定在当前作用域使用上层作用域中(但排除global作用域)的变量名
nonlocal只能在函数内的函数中使用,如果直接在全局作用域下定义的函数中使用该语句,会报错
python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量