[EMAIL PROTECTED] wrote: > Please consider that example: > Python 2.4.3 (#69, Mar 29 2006, 17:35:34) [MSC v.1310 32 bit (Intel)] > on win32 > Type "help", "copyright", "credits" or "license" for more information. >>>> s = 'foo' >>>> f = lambda x: s >>>> f(None) > 'foo' >>>> s = 'bar' >>>> f(None) > 'bar' >>>> del(s) >>>> f(None) > Traceback (most recent call last): > File "<stdin>", line 1, in ? > File "<stdin>", line 1, in <lambda> > NameError: global name 's' is not defined > > It seems to me, that f is referencing the name s instead of the string > object bound to it
that's how lexical scoping works, of course. if you want to bind to the object instead of the name, use explicit binding: f = lambda x, s=s: s </F> -- http://mail.python.org/mailman/listinfo/python-list