Python作用域是什么?Python作用域有什么用
在python中常常会把作用域和命名空间联系在一起,那么我们这篇文章就来讲一讲python作用域是什么。
作用域是命名空间可直接访问的Python程序的文本区域,“可直接访问”的意思是,对名称的非限定引用会在命名空间中查找名称。
作用域虽然是静态确定的,但会被动态使用。执行期间的任何时刻,都会有3或4个命名空间可被直接访问的嵌套作用域,关系如下:
1.最内层作用域,包含局部名称,并首先在其中进行搜索。
2.封闭函数的作用域,包含非局部名称和非全局名称,从最近的封闭作用域开始搜索。
3.倒数第二个作用域,包含当前模块的全局名称。
4.最外层的作用域,包含内置名称的命名空间,最后搜索。
如果把名称声明为全局变量,则所有引用和赋值将直接指向包含该模块的全局名称的中间作用域。重新绑定在最内层作用域以外找到的变量,使用nonlocal语句把该变量声明为非局部变量。未声明为非局部变量的变量是只读的,写入只读变量会在最内层作用域中创建一个新的局部变量,而同名的外部变量保持不变。
通常,当前局部作用域将(按字面文本)引用当前函数的局部名称。在函数之外,局部作用域引用与全局作用域一致的命名空间-模块的命名空间。类定义在局部命名空间内再放置另一个命名空间。
作用域是按字面文本确定的,模块内定义的函数的全局作用域就是该模块的命名空间,无论该函数从什么地方或以什么别名被调用。另一方面,实际的名称搜索是在运行时动态完成的。但是Python正在朝着“编译时静态名称解析”的方向发展,因此不要过于依赖动态名称解析。
以上就是关于python作用域是什么的内容了。