PEP 260: simplify xrange()
This commit is contained in:
parent
be63f6f87c
commit
f3c016e25f
|
@ -60,6 +60,7 @@ Index by Category
|
|||
S 256 pep-0256.txt Docstring Processing System Framework Goodger
|
||||
S 257 pep-0257.txt Docstring Conventions Goodger, van Rossum
|
||||
S 258 pep-0258.txt DPS Generic Implementation Details Goodger
|
||||
S 260 pep-0260.txt Simplify xrange() van Rossum
|
||||
|
||||
Py-in-the-sky PEPs (not ready; may become active yet)
|
||||
|
||||
|
@ -186,6 +187,7 @@ Numerical Index
|
|||
S 257 pep-0257.txt Docstring Conventions Goodger, van Rossum
|
||||
S 258 pep-0258.txt DPS Generic Implementation Details Goodger
|
||||
SR 259 pep-0259.txt Omit printing newline after newline van Rossum
|
||||
S 260 pep-0260.txt Simplify xrange() van Rossum
|
||||
|
||||
|
||||
Key
|
||||
|
|
|
@ -0,0 +1,75 @@
|
|||
PEP: 260
|
||||
Title: Simplify xrange()
|
||||
Version: $Revision$
|
||||
Author: guido@python.org (Guido van Rossum)
|
||||
Status: Draft
|
||||
Type: Standards Track
|
||||
Python-Version: 2.2
|
||||
Created: 26-Jun-2001
|
||||
Post-History: 26-Jun-2001
|
||||
|
||||
Abstract
|
||||
|
||||
This PEP proposes to strip the xrange() object from some rarely
|
||||
used behavior like x[i:j] and x*n.
|
||||
|
||||
|
||||
Problem
|
||||
|
||||
The xrange() function has one idiomatic use:
|
||||
|
||||
for i in xrange(...): ...
|
||||
|
||||
However, the xrange() object has a bunch of rarely used behaviors
|
||||
that attempt to make it more sequence-like. These are so rarely
|
||||
used that historically they have has serious bugs (e.g. off-by-one
|
||||
errors) that went undetected for several releases.
|
||||
|
||||
I claim that it's better to drop these unused features. This will
|
||||
simplify the implementation, testing, and documentation, and
|
||||
reduce maintenance and code size.
|
||||
|
||||
|
||||
Proposed Solution
|
||||
|
||||
I propose to strip the xrange() object to the bare minimum. The
|
||||
only retained sequence behaviors are x[i], len(x), and repr(x).
|
||||
In particular, these behaviors will be dropped:
|
||||
|
||||
x[i:j] (slicing)
|
||||
x*n, n*x (sequence-repeat)
|
||||
cmp(x1, x2) (comparisons)
|
||||
i in x (containment test)
|
||||
x.tolist() method
|
||||
x.start, x.stop, x.step attributes
|
||||
|
||||
By implementing a custom iterator type, we could speed up the
|
||||
common use, but this is optional (the default sequence iterator
|
||||
does just fine).
|
||||
|
||||
I expect it will take at most an hour to rip it all out; another
|
||||
hour to reduce the test suite and documentation.
|
||||
|
||||
|
||||
Scope
|
||||
|
||||
This PEP only affects the xrange() built-in function.
|
||||
|
||||
|
||||
Risks
|
||||
|
||||
Somebody's code could be relying on the extended code, and this
|
||||
code would break. However, given that historically bugs in the
|
||||
extended code have gone undetected for so long, it's unlikely that
|
||||
much code is affected.
|
||||
|
||||
|
||||
Copyright
|
||||
|
||||
This document has been placed in the public domain.
|
||||
|
||||
|
||||
Local Variables:
|
||||
mode: indented-text
|
||||
indent-tabs-mode: nil
|
||||
End:
|
Loading…
Reference in New Issue