Is this a good use for lambda
bokr at oz.net
Mon Dec 20 05:41:36 CET 2004
On Sun, 19 Dec 2004 20:59:43 +0100, "Fredrik Lundh" <fredrik at pythonware.com> wrote:
>Walter S. Leipold wrote:
>> I think that Charlie's point is that, when you use "def <name>", you have
>> <name> polluting your namespace. The whole program becomes harder to
>> understand because you can't ignore <name> anywhere, even if it was only
>> ever intended to be used in one place.
>Ahem. If you name the function, you can reuse the name (or just forget about it)
>as soon as you've used the function object.
>If you don't want to reuse the name because you might want to reuse the function
>object, you have to name it anyway.
Are you forgetting that all bindings are not directly name bindings as created by def? ;-)
(See also various tkinter-related uses).
>>> funs = [lambda:'one', lambda:'two', lambda:'three']
>>> for use in xrange(2):
... for i in xrange(3):
... print '%susing fun[%s] => %r' %('re'*(use>0), i, funs[i]())
using fun => 'one'
using fun => 'two'
using fun => 'three'
reusing fun => 'one'
reusing fun => 'two'
reusing fun => 'three'
More information about the Python-list