Partial Function Application -- Advantages over normal function?
Terry Reedy
tjreedy at udel.edu
Mon Jul 18 15:58:51 EDT 2011
On 7/18/2011 8:24 AM, Paul Woolcock wrote:
> Partial function application (or "currying") is the act of taking a
> function with two or more parameters, and applying some of the arguments
> in order to make a new function. The "hello world" example for this
> seems to be this:
>
> Let's say you have a function called `add`, that takes two parameters:
>
>> >> def add(left, right):
> ... return left + right
>
> Now let's say you want a function that always adds 2 to a number you
> give it. You can use partial function application to do this:
>
> >>> from functools import partial
> >>> add2 = partial(add, right=2)
>
> Now, you have a new function, `add2`, that takes one parameter:
>
> >>> add2(4)
Or you can directly write
def add2(x): return x + 2
or more generically
def makeadder(y)
def _add(x): return x+y
add2 = makeadder(2)
functool.partial is essential a generic version of makeadder in that it
also abstract the function/operator. It is useful when one has a
function but perhaps not the source. It's limitation is that args are
frozen left to right while the above example freezes the right operand.
--
Terry Jan Reedy
More information about the Python-list
mailing list