本文主要是介绍关于global和nonlocal那点事!!!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
函数的作用域
访问一个变量时,Python 会按照 LEGB 的顺序进行查找。
- L(Local):局部作用域。包括函数内部定义的变量和参数。在函数内部最先进行变量查找。
- E(Enclosing):嵌套函数的父函数的作用域。如果在当前函数内部找不到变量,就会向上一层嵌套的函数中查找。
- G(Global):全局作用域。在模块层次定义的变量,对于整个模块都是可见的。
- B(Built-in):内置作用域。包括 Python 的内置函数和异常。
当然全局变量也不易太多,容易造成全局变量污染,以及对内存造成压力。
global和nonlocal两个关键字
global是告诉函数这个变量是全局的变量,不是我函数里的变量,就直接找LEGB中的G了。
而nonlocal的使用前提是必须要有函数的嵌套,告诉函数这个变量不是local的变量,所以就在LEGB中的E中找变量。且只能在E中找,不论几层嵌套。
在模块中定义的叫做全局变量,可以说:函数中定义的一定不是全局变量,除非使用了global关键字
若有错误与不足请指出,关注DPT一起进步吧!!!
这篇关于关于global和nonlocal那点事!!!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!