命名空间(namespace)经常和作用域(scope)一起用。
在Python编译器中输入import this
会返回The Zen of Python,最后一句:
Namespaces are one honking great idea – let’s do more of those!
为了解namespace,先了解name
-
Python中的Name
Name又称为identifier(标识符),是给对象的一个名字。Python中一切皆对象,Name是一种访问底层对象的方式。
比如,赋值语句
a=2
中,2是对象,a是相应的Name。Name可以指代任何类型的对象。
-
Python中的NameSpace
简单地说,namespace是name的集合。
Python中,你可以把namespace理解为你所定义的所有Name到相应对象的一种映射。
不同命名空间可同时存在,且完全独立。
首先,自Python启动命名空间会包含所有内置名字。这就是为什么在程序的任何位置我们都可以使用内置函数(id(),print()…).
每个模块都会创建自己的全局namespce。
不同的命名空间都是独立的,所以不同的模块内可以又相同的name而不会发生冲突。
每个模块可以有不同的函数和类。当新建一个函数(function)就会新建一个局部命名空间(