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

Paul Moore p.f.moore at gmail.com
Wed Nov 22 11:16:42 EST 2017


On 22 November 2017 at 16:08, 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

I'm still not clear what "fix" would actually mean, but you propose
clarifying the docs below, so I assume it means "according to whatever
the updated docs say"...

> - update PEP 530 and docs re generator expressions vs comprehensions

Docs more importantly than PEP IMO. And are you implying that there's
a difference between generator expressions and comprehensions? I
thought both were intended to behave as if expanded to a function
containing nested for loops? Nothing said in this thread so far (about
semantics, as opposed to about current behaviour) implies there's a
deliberate difference.

> - make `yield` in generator expressions a SyntaxError

That contradicts the suggestion that generator expressions are
equivalent to the expanded function definition we saw before.

> If everyone agrees, then I propose to open a separate issue on b.p.o. to
> coordinate the efforts.

I agree it needs clarifying. Not sure I agree with your proposed
semantics, but I guess that can wait for when we have a concrete doc
change proposal.
Paul


More information about the Python-Dev mailing list