Dnia 18-08-2009 o 22:51:19 Robert Dailey <rcdai...@gmail.com> napisaƂ(a):

The example I gave earlier is a bit contrived, the real example
fundamentally requires a lambda since I am actually passing in local
variables into the functions the lambda is wrapping. Example:

def MyFunction():
  localVariable = 20
  CreateTask( lambda: SomeOtherFunction( localVariable ) ) # CreateTask
() executes the functor internally

Lambda in Python is a sintactic sugar for some simple situations. But you
*always* can replace it with def, e.g.:

 def MyFunction():

     localVariable = 20
     def TaskFunction():
         SomeOtherFunction(localVariable)

     CreateTask(TaskFunction)

If we say about You can also use functools.partial:

 import functools

 def MyFunction():

     localVariable = 20
     CreateTask(functools.partial(SomeOtherFunction, localVariable)

...which (especially) makes sense if passed function is supposed to be
callend many times.

This is more or less like the real scenario I'm working with. There
are other (more personal) reasons why I prefer to avoid 'def' in this
case. I want to keep the functor as central to the code that needs it
as possible to improve code readability.

IMHO def is mostly more readable (see my previous mail...).

Thanks for the help everyone. I guess in Python 3.0 the print()
function will not require the import from __future__ to work in this
particular case?

Print as a function is a standard feature of Py 3.x so it doesn't
require it (see: http://docs.python.org/3.1/whatsnew/3.0.html ).

Regards,
*j

--
Jan Kaliszewski (zuo) <z...@chopin.edu.pl>
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to