美文网首页
函数进阶:递归函数,纯函数,匿名函数,偏函数

函数进阶:递归函数,纯函数,匿名函数,偏函数

作者: 庄周幻梦 | 来源:发表于2020-09-18 20:16 被阅读0次

    递归函数: 直接或者间接调用函数本身的函数.

    # 斐波契纳 1,1,2,3,5,8,13,21,34,55,89,...
    import functools
    import sys
    
    
    @functools.lru_cache  # (缓存装饰器防止递归深度过长耗时以及超过递归深度而报错)
    def fbqn(n):
        if n == 1 or n == 2:
            return 1
        else:
            return fbqn(n-1)+fbqn(n-2)
    
    
    # print(sys.getrecursionlimit())    # 打印最大递归深度的值
    # sys.setrecursionlimit(20000000)   # 设置最大递归深度的值
    # print(fbqn(10))
    

    纯函数:一个函数的返回结果只依赖其参数,并且执行过程中没有副作用。

    def add(a, b):
        return a+b
    
    print(add(1, 2))
    

    匿名函数:由一个单独 expression 构成的匿名内联函数,表达式会在调用时被求值。创建 lambda 函数的句法为 lambda [parameters]: expression

    # lambda 参数:返回值
    
    def add(a, b):
        print(a+b)
    
    add(1,2)
    add = lambda a,b:print(a+b)
    
    add(1,2)
    

    偏函数: functools模块partial函数,固定函数的作用。

    from functools import partial
    def add_4(a: int, b: int, c: int, d: int):
        res = a+b+c+d
        print(res)
    
    
    add_4 = partial(add_4, c=2, d=2)
    
    # add_4(1, 2)         # 按位置进行传参.
    
    add_4_1 = partial(add_4, a=2, d=2)
    
    # add_4_1(b=2,c=2)    # 按关键字进行传参.
    

    相关文章

      网友评论

          本文标题:函数进阶:递归函数,纯函数,匿名函数,偏函数

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