On Wed, 21 Jan 2009 03:56:06 am Antoine Pitrou wrote: > Alexey G. Shpagin <python-3000 <at> udmvt.ru> writes: > > Example will look like > > g = (n for n in range(100) if n*n < 50 or else_break()) > > Please don't suggest any hack involving raising StopIteration as part > of a conditional statement in a generator expression. It might work > today, but it might as well break tomorrow as it's only a side-effect > of the implementation, not an official property of the language.
If that's the case, then that is a point in favour of the PEP. Personally, I find the proposed syntax change very readable and intuitive. Some have argued that it makes Python harder to learn because it adds one more thing to learn, but that's a trivial objection. It's an extension to the existing syntax, but an obvious one. The difficulty in becoming proficient in a language is not learning the syntax, but in becoming experienced with the libraries, and on that regard the PEP is a win because it simplifies the itertools module by removing takewhile (which unfortunately I find neither readable or intuitive). 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. 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. 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. -- Steven D'Aprano _______________________________________________ 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