lambda without vars?
Remco Gerlich
scarblac-spamtrap at pino.selwerd.nl
Wed Mar 15 09:10:47 EST 2000
moonseeker at my-deja.com wrote in comp.lang.python:
> Can't I use variables in a lambda definition?
>
> i.e.:
>
> xList = [5, 10, 20, 35, 55]
> y = 50
> a = filter (lambda x: x<y, xList)
Actually, this works fine. What probably didn't work for you is using this
construct inside a function. That's because Python has only two namespaces:
the function's local namespace and the module's global namespace. In this
example, xList and y are global, so they can be used inside the lambda.
If you use this inside a function, they're part of the function's local
namespace, and the lambda has its own local namespace, so it can't access y.
Solution: include the value of y in the lambda definition, as in
a = filter (lambda x, y=y: x<y, xList)
See also the FAQ.
--
Remco Gerlich, scarblac at pino.selwerd.nl
Hi! I'm a .sig virus! Join the fun and copy me into yours!
More information about the Python-list
mailing list