> > Yes. I'm getting cold feet about __reversed__. > > What can I do to warm those feet? > > I spent a month making this proposal as perfect as possible, gathering > support for it, trying each proposed modification, and enduring what > feels like hazing. Still, there is a little bit of energy left if that > what it takes to put the ball over the goal line. > > Getting this far hasn't been easy. Python people are quick to express > negativity on just about anything and they take great pleasure is > exploring every weird variant they can think of. I'm okay with adding reversed() as a builtin that works for sequences only but I'm not okay with adding the __reversed__ protocol. For me, the main advantage of reversed() is that it expresses better what I mean when I'm going over a list (or other concrete sequence) backwards. The __reversed__ protocol muddles the issue by inviting to try to make reversed() work for some iterators; I don't see the use case (or if I do see it, I see it as much less important than the previous one). > > I also still think that a reversed [x]range() would give us a bigger > > bang for the buck > > I'm not willing to go that route: > * Several posters gave negative feedback on that option. > * It doesn't address the ugly and inefficient s[::-1] approach which I > really do not want to become *the* idiom. > * Providing yet another variant of xrange() is a step backwards IMO. > * It is not an extensible protocol like the reversed() / __reversed__ > pair. > * Except for the simple case of revrange(n), the multiple argument forms > are not a simplification (IMO) and are still difficult to visually > verify (try the example from random.shuffle). > * A unique benefit to python is the ability to loop over containers > without using indices. The current proposal supports that idea. The > revrange() approach doesn't. Points well taken. About your last bullet, I wonder if one of the issues is that when doing a forward loop over a container, we don't really care that much about the order as long as we get all items (witness the popularity of looping over dicts). But when doing a reverse loop, we clearly *do* care about the order. So forward and reverse iteration are not symmetric. This may explains why 3 out of 5 examples you found *need* the index. --Guido van Rossum (home page: http://www.python.org/~guido/)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4