Sri*_*aju 43 python programming-languages namespaces
我刚刚开始学习Python并且在Python中遇到了"命名空间"概念.虽然我得到了它的概念,但我无法理解这个概念的严重性.
网上的一些浏览显示,针对PHP的一个原因是它没有对命名空间的本机支持.
有人可以解释如何使用命名空间以及此功能如何使编程更好(不仅仅是在Python中,因为我假设命名空间不是限于特定语言的概念).
我主要来自Java和C编程背景.
S.L*_*ott 46
命名空间是一种实现范围的方法.
在Java(或C)中,编译器通过静态范围分析确定变量的可见位置.
在C中,范围是函数的主体,也可以是全局的,也可以是外部的.编译器会为您解释此问题,并根据范围规则解析每个变量名称.编译完所有模块后,链接器将解析外部名称.
在Java中,scope是方法函数的主体,或类的所有方法.某些类名也具有模块级范围.同样,编译器在编译时计算出来并根据范围规则解析每个名称.
在Python中,每个包,模块,类,函数和方法函数都拥有一个"名称空间",其中解析了变量名称.另外,如果名称不在本地名称空间中,则使用全局名称空间.
在本地命名空间(函数体,模块等)中检查每个变量名,然后在全局命名空间中进行检查.
变量通常仅在本地名称空间中创建.该global和nonlocal语句可以比本地命名空间创建其他变量.
当评估函数,方法函数,模块或包(即,开始执行)时,将创建命名空间.将其视为"评估背景".当函数或方法函数等完成执行时,将删除命名空间.变量被删除.也可以丢弃对象.