[Tutor] Why use lambda?

Alan Gauld alan.gauld at btinternet.com
Sun Aug 3 01:28:11 CEST 2008


"bob gailer" <bgailer at gmail.com> wrote

> In my Python Pipelines program for the Count stage I have:
>
> opts = {
>  'characters' : lambda rec, tot: tot + len(rec),
>  'words' :      lambda rec, tot: tot + len(rec.split()),
>  'lines' :      lambda rec, tot: tot + 1,
>  'minline' :    lambda rec, tot: min(len(rec), tot),
>  'maxline' :    lambda rec, tot: max(len(rec), tot),
>       }

def characters(rec,tot): return tot + len(rec)
def words(rec,tot): return tot + len(rec.split())
etc...

Not many more characters than using lambda and
avoids the need for the dictionary lookup:

instead of

w = opts['words'](r,c)

just use:

w = words(r,c)

If you need the dictionary for dynamic lookup then just insert
the functions intop the dict:

opts = {
'characters' : characters,
'worsds' : words,
etc...
}

> Consider how many more lines of code it would take if I had to use 
> defs.

More or less by definition a Python lambda expression can
be replaced with a one-liner function.

> Consider how readable it is to have the expressions all in one 
> place.

In this case I'm not sure the gain is huge, its largely a matter of
personal preference.

Alan G. 




More information about the Tutor mailing list