zoukankan      html  css  js  c++  java
  • ###柯里化 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


     
  • 相关阅读:
    了解 Spring Data JPA
    Spring MVC 方法注解拦截器
    Spring MVC拦截器+注解方式实现防止表单重复提交
    java中return语句的用法总结
    equal方法在String类与Object类中的区别
    instanceof用法
    EL 简介及用法
    JAVA 四大域对象总结
    JSP基本语法
    Servlet请求转发 RequestDispatcher接口知识点
  • 原文地址:https://www.cnblogs.com/tom-li/p/5287561.html
Copyright © 2011-2022 走看看