Odd closure issue for generators
Ned Deily
nad at acm.org
Fri Jun 5 01:58:13 EDT 2009
In article <4A28903B.4020301 at sweetapp.com>,
Brian Quinlan <brian at sweetapp.com> wrote:
> Scott David Daniels wrote:
> [snipped]
> > When you evaluate a lambda expression, the default args are evaluated,
> > but the expression inside the lambda body is not. When you apply that
> > evaluated lambda expression, the expression inside the lambda body is
> > is evaluated and returned.
>
> But that's not really the issue. I knew that the lambda was not
> evaluated but thought each generator expression got its own context
> rather than sharing one.
Each? Maybe that's a source of confusion. There is only one generator
expression in your example.
>>> c = (lambda : i for i in range(11, 16))
>>> c
<generator object <genexpr> at 0x114e90>
>>> d = list(c)
>>> d
[<function <lambda> at 0x119348>, <function <lambda> at 0x119390>,
<function <lambda> at 0x1193d8>, <function <lambda> at 0x119420>,
<function <lambda> at 0x119468>]
--
Ned Deily,
nad at acm.org
More information about the Python-list
mailing list