在python中常常会把作用域和命名空间联系在一起,那么我们这篇文章就来讲一讲python作用域是什么 。
文章插图
作用域是命名空间可直接访问的Python程序的文本区域,“可直接访问”的意思是,对名称的非限定引用会在命名空间中查找名称 。
作用域虽然是静态确定的,但会被动态使用 。执行期间的任何时刻,都会有3或4个命名空间可被直接访问的嵌套作用域,关系如下:
1.最内层作用域,包含局部名称,并首先在其中进行搜索 。
2.封闭函数的作用域,包含非局部名称和非全局名称,从最近的封闭作用域开始搜索 。
3.倒数第二个作用域,包含当前模块的全局名称 。
【Python作用域是什么?Python作用域有什么用】4.最外层的作用域,包含内置名称的命名空间,最后搜索 。
如果把名称声明为全局变量,则所有引用和赋值将直接指向包含该模块的全局名称的中间作用域 。重新绑定在最内层作用域以外找到的变量,使用nonlocal语句把该变量声明为非局部变量 。未声明为非局部变量的变量是只读的,写入只读变量会在最内层作用域中创建一个新的局部变量,而同名的外部变量保持不变 。
通常,当前局部作用域将(按字面文本)引用当前函数的局部名称 。在函数之外,局部作用域引用与全局作用域一致的命名空间-模块的命名空间 。类定义在局部命名空间内再放置另一个命名空间 。
作用域是按字面文本确定的,模块内定义的函数的全局作用域就是该模块的命名空间,无论该函数从什么地方或以什么别名被调用 。另一方面,实际的名称搜索是在运行时动态完成的 。但是Python正在朝着“编译时静态名称解析”的方向发展,因此不要过于依赖动态名称解析 。
以上就是关于python作用域是什么的内容了 。
推荐阅读
- Python中Class对象是什么?Class对象详解
- Python命名空间是什么?Python命名空间有什么用
- Python中类的含义是什么?什么是Python的类
- Python异常处理的清理操作是什么?如何定义清理操作
- 2020年京东双11赛马活动规则是什么?怎么报名?
- 2020京喜双11有什么活动?每满减优惠券玩法规则是什么?
- 京东新店铺运营策略是什么?京东新店铺怎么运营?
- 亚马逊全球开店如何发货?流程是什么?
- 淘宝开店怎么查看收入?方法是什么?
- python如何将图像进行合并?python将图像进行合并的方法是什么?