[Python-Dev] Tricky way of of creating a generator via a comprehension expression (original) (raw)

Paul Moore p.f.moore at gmail.com
Thu Nov 23 09:30:54 EST 2017


On 23 November 2017 at 14:24, Ivan Levkivskyi <levkivskyi at 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.

Paul



More information about the Python-Dev mailing list