python系列07——图文并茂LEGB原则

Python在查找变量时遵循LEGB规则:Local(局部),Enclosed(嵌套),Global(全局),Builtin(内置)。从局部作用域开始,找不到则搜索外层作用域,再是全局作用域,最后是内置作用域。如果在所有命名空间中都未找到,将引发NameError。例如,使用内置函数如str()时,即使在局部和全局都没有定义,也能在内置命名空间找到。
摘要由CSDN通过智能技术生成

LEGB规则

python在查找名称时,是按照LEGB规则查找的:
Local——Eclosed——Global——Built in

Local:指函数/类的方法内部。
Eclosed:嵌套函数(一个函数包裹另一个函)
Global:指模块中的全局变量
Built in:指python为自己保留的特殊名称。

如果某个name映射在局部命名空间内没有找到,接下来就会在闭包区域搜索,如果还没有找到回到全局(Global)命名空间中查找,最后会在内建(Built in)命名空间搜索。

如果一个名称在所有命名空间中都没有找到,就会产生一个Nameerror

以下面的代码为例

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由于str()是python本就有的函数,所以最终还是可以在Built in中找到,若他不是str(),是其他python中没有的东西,则会报错

以上内容为原创,转载请注明https://blog.csdn.net/xvxianhe/article/details/115976646

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值