Abstract and concrete syntax

George Sakkis gsakkis at rutgers.edu
Fri Jun 10 18:53:13 CEST 2005


"Mandus" wrote:

> Thu, 09 Jun 2005 03:32:12 +0200 skrev David Baelde:
> [snip]
> >
> > set_callback(obj,
> >              lambda x: (if a:
> >                2
> >              else:
> >                3)
> >
> [snip]
>
> You can do stuff like this: lambda x: x and 2 or 3
>
> Of course, you are still quite limited in what you can do, but it have
> solved some of my problems...

Another case I've found handy to use lambdas and expressions instead of
named functions and statements is for simple properties:

class SomeArray(object):
    dimensions = property(
        fget = lambda self: (self.x,self.y),
        fset = lambda self,(x,y): setattr(self,'x',x) or
                                  setattr(self,'y',y))

Again, it is quite limited, but properties are also often limited so
it's a useful idiom to know.

George




More information about the Python-list mailing list