Gabriel Genellina wrote:
En Thu, 04 Jun 2009 18:40:07 -0300, Brian Quinlan <br...@sweetapp.com>
escribió:
This is from Python built from the py3k branch:
It's not new; same thing happens with 2.x
A closure captures (part of) the enclosing namespace, so names are
resolved in that environment even after the enclosing block has finished
execution.
As always, the name->value evaluation happens when it is required at
runtime, not earlier ("late binding"). So, in the generator expression
(lambda : i for i in range(11, 16)) the 'i' is searched in the enclosing
namespace when the lambda is evaluated, not when the lambda is created.
OK, I talked myself into agreeing that it is better for the generator
comprehension to share a context amongst every enclosed generator
expression (rather than having one context per generator expression) for
consistency reasons.
Thanks!
Cheers,
Brian
--
http://mail.python.org/mailman/listinfo/python-list