您的位置:首页 > 编程语言 > Python开发

Python中的函数柯里化

2013-07-19 18:10 176 查看
Python中的函数柯里化

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。
那么反柯里化有什么用?
一些函数式编程语言,就是利用反柯里化来实现多参数函数。
至于还能用在什么地方,本人也不知道,只是作为兴趣了解一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: