Python 文档:混淆模块和子模块的术语

Python docs: confusing terminology of modules and submodules

docs说:Packages are a way of structuring Python’s module namespace by using “dotted module names”. For example, the module name A.B designates a submodule named B in a package named A.

包在文档中定义为一个目录,其中包含一些子目录或文件。遵循此约定,这些子目录将是子包。那么子模块将是子目录中的模块,或者子包?

模块名称A.B在名为A的包中指定一个名为B的模块会不会更清楚?

假设目录 A 有一个包含文件 D 的子目录 C,那么人们会说 D,完全 A.C.D,是 A 的 子模块

来自术语 module 的词汇表:

An object that serves as an organizational unit of Python code. Modules have a namespace containing arbitrary Python objects. Modules are loaded into Python by the process of importing.

... 以及术语 package:

A Python module which can contain submodules or recursively, subpackages. Technically, a package is a Python module with an __path__ attribute.

所以每个(子)包也是一个模块,但反之则不然。

以您给出的包布局为例:

A
├── B.py
├── C
│   ├── D.py
│   └── __init__.py
└── __init__.py

这里,A, B, C, D是所有的模块(你可以通过它们的名称导入它们:import Aimport A.Bimport A.Cimport A.C.D)。但是只有 A, C 被视为包。