Python模块与包

Python模块与包,python,python-module,python-packaging,Python,Python Module,Python Packaging,我正在阅读一份文件,遇到了以下部分: A​模块​ 只不过是一个带有​__初始值​ 文件在里面。它应该包含与模块用途相关的逻辑的其他Python文件 这个定义正确吗 (据我所知,Python模块是一个文件,其扩展名为py,其中包含Python代码。我记得一个包含dunder init(\uuuu init\uuuuu.py)的目录称为Python包。)定义不正确 虽然“包”也是一个“模块”,但单个“.py”文件本身包括:, 一个模块,不需要是目录,也不需要有\uuuu init\uuu文件 另一方

我正在阅读一份文件,遇到了以下部分:

A​模块​ 只不过是一个带有​__初始值​ 文件在里面。它应该包含与模块用途相关的逻辑的其他Python文件

这个定义正确吗


(据我所知,Python模块是一个文件,其扩展名为py,其中包含Python代码。我记得一个包含dunder init(
\uuuu init\uuuuu.py
)的目录称为Python包。)

定义不正确

虽然“包”也是一个“模块”,但单个“.py”文件本身包括:, 一个模块,不需要是目录,也不需要有
\uuuu init\uuu
文件

另一方面,包通常是(并定义为)包含
\uuuu init\uuuuu.py
和其他可选文件的目录


(但是,包可以以其他格式显示,例如.egg或zip文件,甚至是具有相应自定义导入机制的自定义格式,这些机制是可插入的)

包也是一个模块,因为我可以按名称导入它。我认为这个定义有点草率,因为它不允许使用单文件模块。也许这两个定义都不好。模块不需要是.py文件(例如,它们可以是.so),包不需要是磁盘上的目录(例如,它们可以是zipfiles)。模块和包可以在内存中动态创建,并且可能根本不存在于文件系统中。名称空间包是一种Python包,它没有任何
\uuuu init\uuuu.py