为什么 Python 3 统计模块有 collections 模块作为子模块?

Why does Python 3 statistics module have the collections module as submodule?

检查 statistics 模块,Python 将 collections 模块列为其子模块之一:

>>> import statistics
>>> 'collections' in dir(statistics)
True

此外,collections 子模块实际上是标准 Python collections 模块:

>>> import collections
>>> collections == statistics.collections
True

为什么会这样?

它没有任何子模块。 collections 导入的 。导入模块会将对它的引用添加到全局命名空间。来自 statistics module source:

import collections

模块也是对象,存储在 sys.modules 结构中,模块全局变量中的名称只是对它们的引用。所以不仅collections == statistics.collections是真的,collections is sys.modules['collections'].

也是

这不是 "submodule"statistics 只是 using collections:

table = collections.Counter(iter(data)).most_common()