变量的查找顺序:LEGB
名字 | 定义 | 生存期 |
Local |
本地作用域、局部作用域的local命名空间。 在函数内(def或lambda)通过使用方式赋值, 且没有通过global声明为全局变量。 |
函数调用时(非定义时)创建,调用结束时消亡。 |
Enclosing |
python2引入了嵌套函数,实现闭包。 这个就是嵌套函数的外部函数的命名空间。 上层函数的本地作用域。 |
函数调用时(非定义时)创建,调用结束时消亡。 |
Global |
全局作用域:即一个模块的命名空间。 在模块文件顶层赋值的变量名, 或者文件的def内生成的名为全局变量的变量名。 |
模块被import时创建,解释器退出时消亡。 |
Build-in |
内置模块的命名空间。 例如prrint(open),print和open都是内置的变量。 |
python解释器启动时创建,解释器退出时消亡。 |