Odd closure issue for generators
Terry Reedy
tjreedy at udel.edu
Fri Jun 5 18:06:09 EDT 2009
Brian Quinlan wrote:
>
> Sorry, I wasn't as precise as I should have been.
>
> If you consider this example:
> (<expr> for x in y)
>
> I thought that every time that <expr> was evaluated, it would be done in
> a new closure with x bound to the value of x at the time that the
> closure was created.
>
> Instead, a new closure is created for the entire generator expression
> and x is updated inside that closure.
Thanks you for explaining your confusion. Knowing what sort of
other-language-baggage people are being mislead by can only help in
explaining Python. But here is my question. In Python,
g = (<expr> for x in iterable)
is essentially an abbreviation for, and means the same as
def _(it):
for x in it:
yield <expr>
g = _(iterable)
del _
Are there language in which a similar construct has an essentially
different meaning?
Terry Jan Reedy
More information about the Python-list
mailing list