Securing a future for anonymous functions in Python
Ian Bicking
ianb at colorstudy.com
Fri Dec 31 12:54:51 EST 2004
David Bolen wrote:
> Ian Bicking <ianb at colorstudy.com> 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 / ianb at colorstudy.com / http://blog.ianbicking.org
More information about the Python-list
mailing list