4

Python 的文档有一个表,其中包含“大多数序列类型支持”的“通用序列操作”。它列出了例如x in ss[i]len(s)、 序列可以通过方法 和 支持__contains____getitem__内容__len__。但它也列出了min(s)and max(s),我不明白为什么。这两个适用于任何可迭代的,我看不出它们与序列有关的任何特别之处。没有__min____max__或任何其他方式可以真正支持他们,是吗?如果有的话,我希望立即max(range(10**8))给我结果,而不是几秒钟。就像那样。如果和10**20 in range(10**30)minmax只是为了展示内置函数,我更希望reversed被列出,因为这确实与序列有关(它适用于每个序列,但不适用于每个可迭代)。

所以我忽略了什么?或者在以前的 Python 版本中确实__min____max__或以其他方式真正支持minmax存在,并且表没有更新?还是有其他充分的理由在那里列出它们?我很困惑。

该部分的第一段甚至说:

提供collections.abc.SequenceABC 是为了更容易在自定义序列类型上正确实现这些操作。

这听起来像是人们期望编写自定义序列类型以某种方式实现它们。除非有实际的方法来实现它们,否则这对我来说毫无意义。

4

1 回答 1

2

它看起来像一个文档错误,最初的提交是在 1998 年进行的。可能的想法是列出用户可以对序列执行的所有操作,而不一定要覆盖它们。

reversed另一方面是在 2003 年添加的

添加该The collections.abc.Sequence ABC is provided to make it easier to correctly implement these operations on custom sequence types部分时,应该从表中删除min/max函数以防止这种混淆(因为还没有可用的方法来覆盖这两个内置函数的行为),或者应该改进措辞。

于 2020-09-18T17:18:10.247 回答