zl程序教程

您现在的位置是:首页 >  其他

当前栏目

nonlocal和global的作用及区别

2023-04-18 15:47:33 时间

参考资料:

https://zhuanlan.zhihu.com/p/467568306

global

global语句是适用于当前整个代码块的声明,它是全局变量的标识符。如果某名字在局部名字空间中没有定义, 就自动使用相应的全局名字。

global---将变量定义为全局变量,可以通过定义为全局变量,实现在函数内部改变变量值。如果函数中要读取一个外层(这里是global)的变量,不适用globa也可以“读取”该变量;若要在函数内修改该global变量,则需要用global语句,函数对该变量的修改也会体现到global作用域。

如果全局变量是一个可变类型,那么在函数提内修改变量时不需要使用global。如果是不可变类型,则需要使用global

 

 

nonlocal

nonlocal指定在当前作用域使用上层作用域中(但排除global作用域)的变量名

nonlocal只能在函数内的函数中使用,如果直接在全局作用域下定义的函数中使用该语句,会报错

 

 

python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量