优草派  >   Python

Python作用域是什么?Python作用域有什么用

罗西汉            来源:优草派

在python中常常会把作用域和命名空间联系在一起,那么我们这篇文章就来讲一讲python作用域是什么。

Python作用域是什么?Python作用域有什么用

作用域是命名空间可直接访问的Python程序的文本区域,“可直接访问”的意思是,对名称的非限定引用会在命名空间中查找名称。

作用域虽然是静态确定的,但会被动态使用。执行期间的任何时刻,都会有3或4个命名空间可被直接访问的嵌套作用域,关系如下:

1.最内层作用域,包含局部名称,并首先在其中进行搜索。

2.封闭函数的作用域,包含非局部名称和非全局名称,从最近的封闭作用域开始搜索。

3.倒数第二个作用域,包含当前模块的全局名称。

4.最外层的作用域,包含内置名称的命名空间,最后搜索。

如果把名称声明为全局变量,则所有引用和赋值将直接指向包含该模块的全局名称的中间作用域。重新绑定在最内层作用域以外找到的变量,使用nonlocal语句把该变量声明为非局部变量。未声明为非局部变量的变量是只读的,写入只读变量会在最内层作用域中创建一个新的局部变量,而同名的外部变量保持不变。

通常,当前局部作用域将(按字面文本)引用当前函数的局部名称。在函数之外,局部作用域引用与全局作用域一致的命名空间-模块的命名空间。类定义在局部命名空间内再放置另一个命名空间。

作用域是按字面文本确定的,模块内定义的函数的全局作用域就是该模块的命名空间,无论该函数从什么地方或以什么别名被调用。另一方面,实际的名称搜索是在运行时动态完成的。但是Python正在朝着“编译时静态名称解析”的方向发展,因此不要过于依赖动态名称解析。

以上就是关于python作用域是什么的内容了。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行