python命名空间
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