为什么Python 3统计模块将集合模块作为子模块?

时间:2015-12-01 22:50:38

标签: python statistics python-3.4

statistics模块进行了反思,Python将collections模块列为其中一个子模块:

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

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

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

为什么会出现这种情况?

2 个答案:

答案 0 :(得分:3)

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

import collections

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

答案 1 :(得分:1)

它不是“子模块”statistics只是using collections

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