【发布时间】:2020-09-26 01:32:25
【问题描述】:
我一直在阅读有关 typing.Sequence 和 typing.MutableSequence 的信息。两者都没有大量的“轻松阅读”,一切都直接进入细节。
从this answer 到Can you specify variance in a Python type annotation?
Sequence 是 List 的只读版本
这让我想知道,MutableSequence 和普通的List 有什么区别?
更多详情
我能找到的最佳来源是 Python 数据模型的 The standard type hierarchy 部分。
通过阅读Mutable sequences 部分,似乎MutableSequence 可能是List 的“父级”?
换句话说,可以互换使用它们,只是MutableSequence 限制少一点?
【问题讨论】:
-
Sequence不是List的只读版本。你读到的答案是错误的。 -
@user2357112supportsMonica 从阅读
Lists(docs.python.org/3.6/library/stdtypes.html#lists) 中得知“列表是可变序列”。那么我对MutableSequence是List的超集的理解是否正确? -
是的,没错。
-
@IntrastellarExplorer:根据您对超集的解释,您可能会向后看;
List是MutableSequence保证功能的超集。MutableSequence是最低要求,但list可以做并非所有MutableSequences 都能做的事情,例如list可以容纳任何对象,而像array.array这样的其他可变序列仅限于特定范围内的数字类型。 -
是的@ShadowRanger 好点。为了清楚起见,我已将问题中的措辞从“超集”更改为“父级”。
标签: python list sequence type-hinting python-typing