python命名空间

有些话、适合烂在心里 提交于 2020-02-10 01:30:40

1.

命名空间,不仅仅在python中有,在多数解释性语言中都有这个概念。(暂时不确定是不是所有的语言里都有)

php、xml、c++、java、c#......

定义命名空间的意义:避免标识符发生重名冲突;

命名空间的使用:       解析器组织、重用代码;

 

2. python中的命名空间

python的命名空间被定义为四层: "LEGB"

L:  local;     表示该标识符在一个函数定义中,而且在这个函数里面没有再包含函数的定义。

E:  enclosing function;  表示在一个函数定义中,但这个函数里面还包含有函数的定义,其实L层和E层只是相对的。

G:  global;  是指一个模块的命名空间,也就是说在一个.py文件中定义的标识符,但不在一个函数中。

B:  builtin;   是指python解释器启动时就已经具有的命名空间,之所以叫builtin是因为在python解释器启动时会自动

   载入__builtin__模块,这个模块中的list、str等内置函数的就处于B层的命名空间中。

python解释器每次解释python代码的时候会按照LEGB的顺序来查找表示符;标识符的结果呢会以第一个找到的为主。

 

3. 三条规则

一,赋值(包括显式赋值和隐式赋值)产生标识符,赋值的地点决定标识符所处的命名空间。

第二,函数定义(包括def和lambda)产生新的命名空间。

第三,python搜索一个标识符的顺序是"LEGB"。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!