名称空间和作用域
#
名称空间全局名称空间:py文件中存放变量与值的关系的一个空间
局部名称空间:当执行一个函数时,内存中会临时开辟一个空间,临时存放函数中的变量与值的关系
内置名称空间:内置名称空间存放的就是一些内置函数等拿来即用的特殊的变量:input,print,list等等
#
加载顺序内置命名空间(程序运行伊始加载)=>全局命名空间(程序运行中:从上到下加载)=>局部命名空间(程序运行中:调用时才加载。
#
取值顺序空间的取值顺序与加载顺序是相反的,取值顺序满足的就近原则,从小范围到大范围一层一层的逐步引用。
如果你在全局名称空间引用一个变量,先从全局名称空间引用,全局名称空间如果没有,才会向内置名称空间引用
如果你在局部名称空间引用一个变量,先从局部名称空间引用,局部名称空间如果没有,才会向全局名称空间引用
全局名称空间再没有,就会向内置名称空间引用。
在函数中,可以引用全局名称空间的变量,但不可以对这个变量进行修改
在函数中,如果你定义了一个变量,但是在定义这个变量之前就对其引用了,那么解释器就会认为是:语法问题,你应该在引用前先去定义
#
global在局部作用域声明一个全局变量
声明后可在局部修改全局变量
#
nonlocal局部作用域:内层函数对外层函数的局部变量进行修改。
#
作用域全局作用域: 包含内置名称空间和全局名称空间. 在整个文件的任何位置都可以使用(遵循 从上到下逐⾏执行)
局部作用域: 在函数内部可以使用
#
作用域名称空间- 全局作用域: 全局名称空间 + 内置名称空间
- 局部作用域: 局部命名空间
#
内置函数 locals和globals这两个内置函数直接可以反映作用域的内容,有助于我们理解作用域的范围。
locals()
: 以字典的形式返回当前作用域的变量的对应关系。
globals()
: 以字典的形式返回全局作用域所有的变量对应关系。