Guido van Rossum <gu...@python.org> added the comment: To clarify, the outermost iterator is marked here:
[func(x, y) for x in <outermost iterator> for y in <something else>] and it is evaluated before the comprehension proper is started. This is just part of how the language works (it's a similar rule as "in an assignment the RHS is evaluated before it is assigned to the LHS"). I see no benefit in banning `yield` in <outermost iterator>. On Sat, Nov 25, 2017 at 10:22 PM, Guido van Rossum <rep...@bugs.python.org> wrote: > > Guido van Rossum <gu...@python.org> added the comment: > > No. > > On Nov 25, 2017 18:01, "Nick Coghlan" <rep...@bugs.python.org> wrote: > > > > > Nick Coghlan <ncogh...@gmail.com> added the comment: > > > > Serhiy's PR now implements the "Prohibit yield & yield from in generator > > expressions and comprehensions" approach discussed on python-dev > (currently > > as a hard SyntaxError, but it could be amended to be a warning instead > > without too much difficulty). > > > > The PR does highlight an interesting subtlety though: the easiest way to > > implement this still allows yield expressions in the outermost iterator, > > since that gets compiled in a different scope from the rest of the > > comprehension body (it's evaluated eagerly and passed in to the implicit > > nested function). > > > > I'm thinking we probably don't want to expose that detail to end users, > > and will instead want to include a second check that prohibits yield > > expressions in the outermost iterator as well. However, I'm not entirely > > sure how we could implement such a check, short of adding a new "yield > > expression prohibited" counter in the AST generation and/or symbol > analysis > > pass. > > > > ---------- > > > > _______________________________________ > > Python tracker <rep...@bugs.python.org> > > <https://bugs.python.org/issue10544> > > _______________________________________ > > > > ---------- > > _______________________________________ > Python tracker <rep...@bugs.python.org> > <https://bugs.python.org/issue10544> > _______________________________________ > ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue10544> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com