[Python-Dev] Tricky way of of creating a generator via a comprehension expression

Antoine Pitrou solipsis at pitrou.net
Wed Nov 22 11:24:04 EST 2017


On Wed, 22 Nov 2017 17:08:14 +0100
Ivan Levkivskyi <levkivskyi at gmail.com> wrote:
> On 22 November 2017 at 16:56, Yury Selivanov <yselivanov.ml at gmail.com>
> wrote:
> 
> > On Wed, Nov 22, 2017 at 10:10 AM, Ivan Levkivskyi <levkivskyi at gmail.com>
> > wrote:  
> > > On 22 November 2017 at 15:47, Paul Moore <p.f.moore at gmail.com> wrote:  
> > [...]
> > I'm all for prohibiting using 'yield' expression in generator
> > expressions or comprehensions.  The semantics is way to hard to
> > understand and hence be of any value.
> >
> > Making 'await' a SyntaxError is absolutely not an option.  Async
> > generator expressions are a shorthand syntax for defining asynchronous
> > generators (PEP 525), and it's already being used in the wild.
> >  
> 
> OK, makes sense, so it looks like we may have the following plan:
> 
> - fix `yield` in comprehensions
> - update PEP 530 and docs re generator expressions vs comprehensions
> - make `yield` in generator expressions a SyntaxError

Given a comprehension (e.g. list comprehension) is expected to work
nominally as `constructor(generator expression)`
(e.g. `list(generator expression)`), I think both generator expressions
*and* comprehensions should raise a SyntaxError.

(more exactly, they should first emit a SyntaxWarning and then raise a
SyntaxError in a couple of versions)

Regards

Antoine.


More information about the Python-Dev mailing list