1 柯里化(Currying)
一个函数有多个参数,我们希望能固定其中几个参数的值。
from functools import partial def foo(a,b,c): return a+b+c foo2 = partial(foo, b=2) foo2(a=1, c=3) #=>6
看上去这跟提供参数默认值的情况类似。但默认值只能固定
为单个值,而柯里化能通过泛化出很多个函数,每个函数用
不同的固定值,来看一下 应用场景 :
from functools import partial bin2dec = partial(int, base=2) hex2dec = partial(int, base=16)
原int方法的定义为:int( x[, base]),base参数的默认为10
经过柯里化之后,可以用如下方式调用:
int('15') #=>15 using default base 10 bin2dec('01011') #=>11 hex2dec('67') #=>103
2 反柯里化(Uncurrying)
顾名思义,柯里化的逆过程。
将多个只含单个参数的函数模拟成一个多参数函数。
def foo(a): def bar(b): return a+b return bar
你可以像这样调用:foo(1)(4)或(foo(1))(4),都能得到正确的结果5。
- 那么反柯里化有什么用?
一些函数式编程语言,就是利用反柯里化来实现多参数函数。
转自:http://www.tuicool.com/articles/VFVBNf