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

Reply via email to