美文网首页
函数式编程

函数式编程

作者: Farewell_lpf | 来源:发表于2019-06-11 14:12 被阅读0次
    高阶函数

    函数本身可以赋值给变量,即:变量可以指向函数。
    1.map/reduce
    map()接收二个参数,一个是函数,一个是Iterable(可序列对象)。返回新的Iterator(迭代器)
    比如一个函数f(x)=x^2 ,要把这个函数作用在一个list[1,2,3,4,5]上,实现如下:

    def f(x):
        return x*x
    >>> r=map(f,[1,2,3,4,5])
    >>>list(r)
    [1,4,9,16,25]
    

    reduce()把结果和序列的下一个元素做累计计算

    from functools import reduce
    def add(x,y):
        return x+y
    >>>reduce(add,[1,3,5,7,9])
    25
    
    def fn(x,y):
        return x*10 +y
    >>>reduce(fn,[1,3,5,7,9])
    13579
    
    返回函数
    匿名函数

    匿名函数:lambda x : x*x

    装饰器

    decorator就是一个返回函数的高级函数
    定义一个打印日志的decorator

    def log(func):
        @functools.wraps(func)
        def wrapper(*args,**kw):
          print("------")
          return func(*args,**kw)
        return wrapper
    

    decorator接受一个函数作为参数,并返回一个函数

    @log
    def now():
        print("201-03-15")
    

    定义一个带参的装饰器

    def log(text):
        def decorator(func):
            @functools.wraps(func)
            def wrapper(*args,**kw):
                print(text)
                return func(*args,**kw)
            return wrapper
        return decorator
    
    @log
    def now("execute"):
        print("201-03-15")
    
    偏函数

    转换大量二进制字符串,定义个int2()的函数,默认吧base=2传进去

    def int2(x, base=2):
        return int(x, base)
    int2('1000000')
    

    function.partial就是帮助我们创建一个偏函数

     import functools
     int2 = functools.partial(int, base=2)
      int2('1000000')
    

    简单总结functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。

    相关文章

      网友评论

          本文标题:函数式编程

          本文链接:https://www.haomeiwen.com/subject/qxurtctx.html