(original) (raw)
On 23 November 2017 at 05:44, Greg Ewing <greg.ewing@canterbury.ac.nz> wrote:
Ivan Levkivskyi wrote:
The key idea is that neither comprehensions nor generator expressions should create a function scope surrounding the \`expr\`
I don't see how you can avoid an implicit function scope in
the case of a generator expression, though. And I can't see
how to make yield in a generator expression do anything
sensible.
Consider this:
def g():
return ((yield i) for i in range(10))
Presumably the yield should turn g into a generator, but...
then what? My brain is hurting trying to figure out what
it should do.
I think this code should be just equivalent to this code
def g():
temp = \[(yield i) for i in range(10)\]
return (v for v in temp)
Semantics of the comprehension should be clear here (just an equivalent for-loop without name leaking)
--
Ivan