gpt4 book ai didi

python - 模块 `collections` 中的其他 26 个元素

转载 作者:行者123 更新时间:2023-11-28 21:03:00 27 4
gpt4 key购买 nike

我正努力在学习 Python 的过程中深入挖掘并攀登更高的高度。

在尝试了解有关 collections 模块的所有内容时,我在探索它的每个角落时都遇到了问题。在在线文档和 help(collections) 中,介绍了 9 种专门的容器数据类型,请参阅 8.3. collections — Container datatypes :

['Counter', 'OrderedDict', 'defaultdict', 'deque',
'namedtuple', 'ChainMap', 'UserDict', 'UserList', 'UserString']

与该列表相比,还有 26 个未在文档中指定,并且 help() 输出中的详细信息非常有限:

x = [ i for i in dir(collections) if not i.startswith('_')]
>>> list(enumerate(x, start=1))
[(1, 'AsyncGenerator'), (2, 'AsyncIterable'), (3, 'AsyncIterator'), (4, 'Awaitable'), (5, 'ByteString'), (6, 'Callable'),
(7, 'ChainMap'), (8, 'Collection'), (9, 'Container'), (10, 'Coroutine'), (11, 'Counter'), (12, 'Generator'), (13, 'Hashable'), (14, 'ItemsView'), (15, 'Iterable'), (16, 'Iterator'),
(17, 'KeysView'), (18, 'Mapping'), (19, 'MappingView'), (20, 'MutableMapping'), (21, 'MutableSequence'), (22, 'MutableSet'),
(23, 'OrderedDict'), (24, 'Reversible'), (25, 'Sequence'), (26, 'Set'), (27, 'Sized'), (28, 'UserDict'),
(29, 'UserList'), (30, 'UserString'), (31, 'ValuesView'),
(32, 'abc'), (33, 'defaultdict'), (34, 'deque'), (35, 'namedtuple')]

还有必要花时间去探索其他26个吗?

最佳答案

您正在查看模块全局变量的 __all__ 导出列表。由于两个原因,此列表比仅记录的对象大。首先是它包含子模块;在这种情况下 collections.abc在此处列为 abc

第二个是为了向后兼容而添加的对象;额外的名称来自 collections.abc 子模块。曾几何时,该模块不存在,这些对象在移动之前存在于 collections 本身中。来自该模块的名称被导入到 collections 中以容纳仍然从旧位置导入的代码。

这是 documented on the page you linked :

Changed in version 3.3: Moved Collections Abstract Base Classes to the collections.abc module. For backwards compatibility, they continue to be visible in this module as well.

所以在这 26 个中,一个是 collections 的子模块, collections.abc,其余 25 个对象明确存在以支持移动到 collections.abc 模块的名称的向后兼容性。

如果您想了解其他对象,您会发现它们在各自的位置都有记录。使用 help(collections.abc)collections.abc module documentation .

关于python - 模块 `collections` 中的其他 26 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47132404/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com