Jussi Piitulainen wrote:
Terry Reedy writes:
definitions. Lambda expressions create functions just like def
statements and are not closures and do not create closure unless
nested within another function definition. Thinking otherwise is
Seems quite closed in the top level environment to me:
Python 2.3.4 (#1, Jul 16 2009, 07:03:37)
>>> k = 'outer'
>>> f = lambda : k
>>> def test():
... k = 'inner'
... return f()
...
>>> test()
'outer'
>>> k = 'thing'
>>> test()
'thing'
I used closure in the same sense as the OP, who would have expected the
last result to be 'outer', not 'thing'. Runtime lookup in the lexically
defined global namespace is normal function behavior, not special
closure behavior as most people mean is.
Terry Jan Reedy
--
http://mail.python.org/mailman/listinfo/python-list