python命名空间namespace和作用域

Python变量作用域解析
本文详细介绍了Python中变量的作用域及名称空间的概念,包括局部变量、闭包函数变量、全局变量及内置变量,并阐述了Python查找变量时遵循的搜索顺序。

Python的变量定义后都有自己的作用域,每个作用域内都有名字空间。注意⚠️,python所有的变量和函数都是先定义,后使用!!

名称空间就是变量名称与对象的关联关系。Python中使用变量名引用对象,需要使用该变量时,就在命名空间中进行搜索,获取对应的对象。直接访问一个变量,会在四个namespace中逐一搜索,即:Local(innermost)、Enclosing、Global(next-to-last)、Built-in(outtermost)。

1、Local(innermost):局部变量,函数内部的变量

2、Enclosing:也是局部变量,闭包函数变量。

3、 Global:全局变量,脚本文件无缩进的变量。

4、Built-in(outtermost):Python内置的变量和关键词

python使用的搜索顺序是:1-2-3-4 

Local -> Enclosing -> Global -> Built-in

每个函数都有着自已的名称空间,叫做局部名称空间

每个局部名称空间的外部的名称空间,叫做封闭区域;如内嵌函数的外部函数的局部名称空间,就是这个内嵌函数的封闭区域。

每个模块拥有它自已的名称空间,叫做全局名称空间

还有就是内置名称空间,任何模块均可访问它,它存放着内置的函数和异常。

python运行机制:

当有一个变量在 local 域中找不到时,Python会找上一层的作用域,即 enclosing 域(该域不一定存在)。
enclosing 域还找不到的时候,再往上一层,搜索模块内的 global 域。最后,会在 built-in 域中搜索。
对于最终没有搜索到时,Python会抛出一个 NameError 异常。

 

转载于:https://www.cnblogs.com/greatkyle/p/6686127.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值