Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python 增强提案

PEP 260 – 简化 xrange()

作者:
Guido van Rossum <guido at python.org>
状态:
最终
类型:
标准跟踪
创建:
2001年6月26日
Python 版本:
2.2
历史记录:
2001年6月26日

目录

摘要

本 PEP 提案从一些很少使用的行为(如 x[i:j]x*n)中移除 xrange() 对象。

问题

xrange() 函数有一种惯用的用法

for i in xrange(...): ...

然而,xrange() 对象有一些很少使用的行为,这些行为试图使其更像序列。这些行为非常少用,以至于历史上它们存在严重的错误(例如,越界错误),这些错误在几个版本中都没有被发现。

我认为最好放弃这些未使用的特性。这将简化实现、测试和文档,并减少维护和代码大小。

提议的解决方案

我建议将 xrange() 对象精简到最低限度。唯一保留的序列行为是 x[i]len(x)repr(x)。特别是,以下行为将被删除

  • x[i:j](切片)
  • x*nn*x(序列重复)
  • cmp(x1, x2)(比较)
  • i in x(包含测试)
  • x.tolist() 方法
  • x.startx.stopx.step 属性

我还建议更改 PyRange_New() C API 的签名,以移除第四个参数(重复次数)。

通过实现自定义迭代器类型,我们可以加快常用用法,但这可选(默认序列迭代器也能正常工作)。

范围

此 PEP 影响 xrange() 内置函数和 PyRange_New() C API。

风险

某些人的代码可能依赖于扩展代码,而这些代码将被破坏。但是,鉴于历史上扩展代码中的错误长期未被发现,因此不太可能有很多代码受到影响。

过渡

为了向后兼容,Python 2.2 中仍将存在现有功能,但会触发警告。在 Python 2.2 最终版本发布一年后(可能在 2.4 中),该功能将被移除。


来源:https://github.com/python/peps/blob/main/peps/pep-0260.rst

上次修改:2023-09-09 17:39:29 GMT