[Tutor] lambda

bob gailer bgailer at gmail.com
Sat Mar 19 16:17:15 CET 2011


In my Python Pipelines program I have the following

   opts = {
     'characters' : (lambda rec, tot: tot + len(rec), 0),
     'words' :      (lambda rec, tot: tot + len(rec.split()), 0),
     'lines' :      (lambda rec, tot: tot + 1, 0),
     'minline' :    (lambda rec, tot: min(len(rec), tot), 999999999),
     'maxline' :    (lambda rec, tot: max(len(rec), tot), 0)
               }

The user specifies option(s) (the dictionary keys). Thje program then 
creates a class instance for each option, passing the corresponding 
function as a class initialization parameter:

     for option in options:
       func, initTotal = Count.opts.get(option , 0)
       if func:
         ctr = Count.CounterClass(func, spec, initTotal)

it made lots of sense to me to code these as lambdas.

The alternatve would have been 4 defs: (4 more lines of code and more 
indirection in code reading).

def char(rec, tot): return tot + len(rec)
etc

-- 
Bob Gailer
919-636-4239
Chapel Hill NC



More information about the Tutor mailing list