} } }

    Python中的函数柯里化

    添加时间:2013-7-19 点击量:

    Python中的函数柯里化




    1 柯里化(Currying)



    一个函数有多个参数,我们能固定此中几个参数的值。


     functools import partial
    
    def foo(a,b,c):
    return a+b+c

    foo2 = partial(foo, b=2)
    foo2(a=1, c=3)
    #=>6

    看上去这跟供给参数默认值的景象类似。但默认值只能固定

    为单个值,而柯里化能经由过程泛化出很多个函数,每个函数用

    不合的固定值,来看一下 应用处景


     functools import partial
    
    bin2dec = partial(int, base=2)
    hex2dec = partial(int, base=16)

    原int办法的定义为:int( x[, base]),base参数的默认为10

    经过柯里化之后,可以用如式格式调用:


    int15#=>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。



    • 那么反柯里化有什么用?


    一些函数式编程说话,就是哄骗反柯里化来实现多参数函数。

    至于还能用在什么处所,本人也不知道,只是作为爱好懂得一下。












    我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》
    分享到: