Following system colour scheme - Python 增强提案 Selected dark colour scheme - Python 增强提案 Selected light colour scheme - Python 增强提案

Python 增强提案

PEP 260 – 简化 xrange()

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

目录

摘要

本PEP提议从xrange()对象中剥离一些很少使用的行为,例如x[i:j]x*n

问题

xrange()函数有一个惯用用法

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

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

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

提议的解决方案

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

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

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

通过实现自定义迭代器类型,我们可以加快常见用法的速度,但这是可选的(默认的序列迭代器工作得很好)。

范围

本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

最后修改:2025-02-01 08:55:40 GMT