Ian Bicking <[EMAIL PROTECTED]> writes:
The one motivation I can see for function expressions is callback-oriented programming, like:
get_web_page(url, when_retrieved={page | give_page_to_other_object(munge_page(page))})
This is my primary use case for lambda's nowadays as well - typically just to provide a way to convert the input to a callback into a call to some other routine. I do a lot of Twisted stuff, whose deferred objects make heavy use of single parameter callbacks, and often you just want to call the next method in sequence, with some minor change (or to ignore) the last result.
So for example, an asynchronous sequence of operations might be like:
d = some_deferred_function() d.addCallback(lambda x: next_function()) d.addCallback(lambda blah: third_function(otherargs, blah)) d.addCallback(lambda x: last_function())
Steven proposed an ignoreargs function, and the partial function offers the other side (http://www.python.org/peps/pep-0309.html). So this would become:
d = some_deferred_function() d.addCallback(ignoreargs(next_function, 1)) d.addCallback(partial(third_function, otherargs)) d.addCallback(ignoreargs(last_function, 1))
I'm not sure this is "better" than it is with lambda. It's actually considerably less readable to me. Hmm... well, that makes me less excited about those...
-- Ian Bicking / [EMAIL PROTECTED] / http://blog.ianbicking.org -- http://mail.python.org/mailman/listinfo/python-list