zoukankan      html  css  js  c++  java
  • 转:python中函数curry化

    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
  • 相关阅读:
    实例天天向上的力量
    实例天天向上的力量
    数字类型及操作
    基本数据类型
    函数与模块
    Turtle库(海龟)
    python猛蛇绘制
    输出函数
    循环语句
    集合
  • 原文地址:https://www.cnblogs.com/youxin/p/3201937.html
Copyright © 2011-2022 走看看