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
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com