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