• ###柯里化 f(x,y) -> g(x)(y)


    
    
     
    
    
    
    python 柯里化 f(x,y) -> g(x)(y)

    def
    bigger(x): def inner_bigger(y): return y>x return inner_bigger list(filter(bigger(5),range(10))) #filter返回一个迭代器,用list接收 [6, 7, 8, 9] list(filter(bigger(3),range(10))) [4, 5, 6, 7, 8, 9]
    实例化一下:
    bigger_3 = bigger(3)
    bigger_3(4)

    True
    bigger_3(2)
    False

    使用partial 也可以实现柯里化: 用于固定某些参数
    def inc(f,x):
        return f+x
    def bigger(x,y):
        return x >y
    from functools import partial
    help(partial)
    Help on class partial in module functools:
    
    class partial(builtins.object)
     |  partial(func, *args, **keywords) - new function with partial application
     |  of the given arguments and keywords.
     |  
    
    partial(bigger,y=3)
    functools.partial(<function bigger at 0x7f264455ad08>, y=3)
    bigger_3 = partial(bigger,y=3)
    callable(bigger_3) #判断一个函数是否可以被调用 用callable 
    True

    bigger_3(2)  #x=2 > y=3 返回false
    False
    bigger_3(4)  #x=4 > y=3 返回True
    True

     def mang_args(x,y,z,a,b,c):
    ...     print ("x is {}".format(x))
    ...     print ("y is {}".format(y))
    ...     print ("z is {}".format(z))
    ...     print ("a is {}".format(a))
    ...     print ("b is {}".format(b))
    ...     print ("c is {}".format(c))
    
    fn1 = partial(mang_args,a=1,b=2,c=3)
    fn1(4,5,6)
    x is 4
    y is 5
    z is 6
    a is 1
    b is 2
    c is 3


     
  • 相关阅读:
    Redis 数据结构之dict
    分布式一致性算法——paxos
    分布式事务、两阶段提交协议、三阶提交协议
    MySQL主从数据同步延时分析
    MySQL数据丢失情况分析
    INSERT ... ON DUPLICATE KEY UPDATE Syntax
    分布式系统的数据一致性
    分布式系统的BASE理论
    分布式系统的CAP理论
    性能指标体系构建
  • 原文地址:https://www.cnblogs.com/tom-li/p/5287561.html
Copyright © 2020-2023  润新知