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

Alex Martelli aleaxit at yahoo.com
Wed Nov 5 10:56:21 EST 2003


On Wednesday 05 November 2003 04:02 pm, Guido van Rossum wrote:
> > Among the comp.lang.python crowd, nearly everyone supported some form of
> > the PEP (with varying preferences on the name or where to put it).  The
> > community participation rate was high with about 120 posts across four
> > threads contributing to hammering out the current version of the pep.
>
> How many participants in those 120 posts?  (I recall a thread where
> one individual posted 100 messages. :-)

I count 25 separate contributors to threads about PEP 322 (but I only see 75 
posts there, and three threads, so I must be missing some of those that 
Raymond is counting -- or perhaps, not unlikely, they've expired off my 
newsserver).


> > Is there anything else that needs to be done in the way of research,
> > voting, or cheerleading for pep to be accepted?
>
> Yes.  I'm getting cold feet about __reversed__.  Some folks seem to
> think that reversed() can be made to work on many iterators by having
> the iterator supply __reversed__; I think this is asking for trouble
> (e.g. you already pointed out why it couldn't be done for
> enumerate()).

I still think it could be, if enumerate kept a reference to its argument, but
that's a detail -- I trust your instinct about such design issues (or I 
wouldn't be using Python...:-).  So: let's keep it simple and have reversed
be _exactly_ equivalent to (net of performance, hypothetical anomalous 
"pseudosequences" doing weird things, & exact error kinds/msgs):

def reversed(sequence):
    for x in xrange(len(sequence)-1, -1, -1): yield sequence[x]

no __reversed__, no complications, "no nuttin'".

Putting that in the current 2.4 pre-alpha will let us start getting some
experience with it and see if in the future we want to add refinements
(always easier to add than to remove...:-) -- either to reverse or to
other iterator-returning calls (e.g. reverse= optional arguments just
like in the sort method of lists).


Alex




More information about the Python-Dev mailing list