I've now ended up in Guido's boat of needing a summary since I think this thread has grown to cover whether yield should be allowed in comprehensions, something about await in comprehensions, and now about leaking the loop variable (or some implementation detail). IOW there seems to be 3 separate discussions going on in a single thread.

Any chance we can get some clear threads going for each independent topic to make it easier to discuss? I do have an opinion on all three topics (if I understand the topics accurately 😉), but I don't want to contribute to the confusion of the discussion by mentioning them here.

On Thu, Nov 23, 2017, 06:50 Ivan Levkivskyi, <levkivskyi@gmail.com> wrote:
On 23 November 2017 at 15:30, Paul Moore <p.f.moore@gmail.com> wrote:
On 23 November 2017 at 14:24, Ivan Levkivskyi <levkivskyi@gmail.com> wrote:
>> My main concern is that comprehension is not equivalent to a for loop
>> for a specific reason - the scope issue. Has anyone looked back at the
>> original discussions to confirm *why* a function was used?
>>
>> My recollection:
>>
>> >>> i = 1
>> >>> a = [i for i in (1,2,3)]
>> >>> print(i)
>> 1
>>
>> Serihy's approach (and your described expansion) would have print(i)
>> return NameError.
>
>
> Absolutely no, it will still print 1. The internal implementation will use
> unique ids internally (see https://bugs.python.org/issue10544 for details).
>

Ok, cool. My main point still applies though - has anyone confirmed
why a function scope was considered necessary at the time of the
original implementation, but it's apparently not now? I'm pretty sure
it was a deliberate choice, not an accident.

From what Nick explained on b.p.o. I understand that this is closer to the "accident" definition.
Also the original issue https://bugs.python.org/issue1660500 doesn't have any discussion of the implementation _strategy_.
So I tried to dig the mailing list, in the latest Guido's message I have found
he still likes the idea of unique hidden ids (like Serhiy proposes now) and no function scopes. After that there is Nick's message
https://mail.python.org/pipermail/python-3000/2006-December/005229.html where he says that he still likes pseudo-scopes more.
Then I lost the track of discussion.

It may well be Nick's intentional decision (and it has its merits) but I am not sure it was a conscious consensus.
Nick could probably add more. Also I propose to wait and see when Serhiy will show us his complete implementation.

--
Ivan


_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: https://mail.python.org/mailman/options/python-dev/brett%40python.org