[Python-Dev] Re: PEP 322: Reverse Iteration

Guido van Rossum guido at python.org
Wed Nov 5 19:30:56 EST 2003

> > I'm okay with adding reversed() as a builtin that works for sequences
> > only but I'm not okay with adding the __reversed__ protocol.
> But, doesn't this effectively take the PEP back to the original proposal
> of a sequence method that it drifted away from?

No, because making it a sequence method would require every sequence
implementation to support it.  Making it a builtin makes it work for
all sequences (everything that supports __len__ and __getitem__ with
random access, really).

> With the restriction to sequences, reversed() is then likely to be
> implemented as a thin wrapper around seq.somerevmethod() which could then
> return either a new reversed sequence, an iterable, or an iterator
> depending upon efficiency, implementation, thread-safety, etc.

No.  reversed() should *never* return a new sequence; it should return
an iterator.

> Since reversed() is turning out not be generally applicable anyway,
> perhaps going back to the original idea of a sequence method would be a
> good thing?

No.  The feedback on that was pretty uniformly negative.  The PEP is
95% about reversed() on sequences and only a timy bit about
__reversed__, so little is lost.

--Guido van Rossum (home page: http://www.python.org/~guido/)

More information about the Python-Dev mailing list