模块-包
模块
一个以 .py
为后缀的python源码**文件*
包
包是一个特殊的模块,对应一个文件目录
如果一个模块具有
__path__
特性,则该模块为包
常规包
常规包对应的文件夹,会拥有一个名为__init__.py
的文件
命名空间包
如果包对应的文件夹未包含名为__init__.py
的文件,则该包被称为命名空间包
常规包和命名空间包的区别:
常规包和命名空间包都具有命名空间的效果,在不同的常规包或命名空间包中,可以定义名称相同的内容。区别有以下一些:
- 是否包含文件
__init__.py
- 命名空间包的
__file__
特性为None
,而常规包为__init__.py
文件的路径- 命名空间包的
__path__
特性为_NamespacePath
类型,而常规包为列表- 命名空间包的
__loader__
特性为NamespaceLoader
类型,而常规包为SourceFileLoader
类型
命名空间
命名空间是对一个名字起作用的范围
命名空间的本质:存放名字与值得绑定关系