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