Steven D'Aprano wrote: > Another argument against the PEP was that it breaks the correspondence > between the generator expression and the equivalent for-loop. I had > never even noticed such correspondence before, because to my eyes the > most important term is the yielded expression, not the scaffolding > around it. This was a major reason to add comprehensions. Your not noticing a primary design principle is hardly a reason to abandon it. Indeed, I claim that your ignorance shows its validity ;-). > In a generator expression, we have: > > yielded-expr for-clause if-clause > > while the corresponding nested statements are: > > for-clause if-clause yielded-expr > > The three clauses are neither in the same order, nor are they in reverse > order. They are in the same order but rotated, with the last brought around to the front to emphasize it. Did you really not notice that either? >I don't know how important that correspondence is to language > implementers, but as a Python programmer, I'd gladly give up that > correspondence (which I don't find that great) in order to simplify > exiting a generator expression early. > > So I like the proposed change. I find it elegant and very Pythonic. +1 > for me. Ironically, in a thread cross-posted on c.l.p and elsewhere, someone just labeled Python's comprehension syntax as "ad hoc syntax soup". That currently is completely wrong. It is a carefully designed 1 to 1 transformation between multiple nested statements and a single expression. But this proposal ignores and breaks that. Using 'while x' to mean 'if x: break' *is*, to me, 'ad hoc'. So I detest the proposed change. I find it ugly and anti-Pythonic. Terry Jan Reedy
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