Python中的LEGB规则

2020-09-18 11:06:00
六月
来源:
https://www.jianshu.com/p/3b72ba5a209c
转贴 695

理解Python的LEGB原则是理解Python命名空间的关键,而理解Python的命名空间又是理解Python中许多语法规定的关键。

LEGB规则,表示的是Local -> Enclosed -> Global -> Built-in,其中的箭头方向表示的是搜索顺序。

Local 可能是在一个函数或者类方法内部。

Enclosed 可能是嵌套函数内,比如说 一个函数包裹在另一个函数内部。

Global 代表的是执行脚本自身的最高层次。

Built-in 是Python为自身保留的特殊名称。

因此,如果某个name:object映射在局部(local)命名空间中没有找到,接下来就会在闭包作用域(enclosed)进行搜索,如果闭包作用域也没有找到,Python就会到全局(global)命名空间中进行查找,最后会在内建(built-in)命名空间搜索(注:如果一个名称在所有命名空间中都没有找到,就会产生一个NameError)。

参考: https://www.jianshu.com/p/3b72ba5a209c

https://www.cnblogs.com/GuoYaxiang/p/6405814.html

发表评论
评论通过审核后显示。