Make 'def' and 'class' usable within expressions

Glenn Andreas gandreas at no.reply
Thu Mar 25 12:19:39 EST 2004


In article <mailman.407.1080229887.742.python-list at python.org>,
 Shane Hathaway <shane at zope.com> wrote:

> John Roth wrote:
> > If you can make a contribution to a good syntax for
> > a code block, I for one would welcome it.
> > 
> > Just to give you a start: Ruby puts a single code block
> > at the end of the parameter list where it's quite obvious
> > what it is and where it does not interrupt the flow of reading
> > the method call. In python, I'd like to be able to put code
> > blocks wherever I can currently put a function / method
> > object.
> > 
> > For example:
> > 
> > result = map(lambda: ..., list1, list2, list3)
> > 
> > is readable - barely.
> > 
> > result = map(def (x, y, z):
> >                       something
> >                       something else
> >                       return
> >                   list1, list2, list3)
> > 
> > becomes much less readable. This is the problem that
> > needs to be solved to make code blocks fly.
> 
> That's one of the things I'm trying to achieve, too.  Using this syntax, 
> I would write it this way:
> 
> result = map(def(x, y, z), list1, list2, list3):
>      something
>      something else
>      return x
> 
> Shane
> 

What do you do if the expression is in an "if" statement?


if map(def(x,y,z),list1,list2,list3):
   # what goes here?  The body of the function
   # or the body of the if?  And how does the rest of it
   # look?



Also, limiting to "one per expression" prevents you from doing something 
like:

   myHandlers = {
      "click" : def(x,y):
                     print "click at x,y"
      "enter" : def():
                     print "mouse entered"
      "exit"  : def():
                     print "mouse exited"
   }

(since you'd have to write:

   myHandlers = {
      "click" : def(x,y),
      "enter" : somePreviousFunctionForEnter,
      "exit" : somePreviousFunctionForExit
   } :
        print "click at x,y"

which, due to the large distance between the "def" and the body is 
terribly hard to figure out)



More information about the Python-list mailing list