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

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

# 斐波契纳 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)    # 按关键字进行传参.

你可能感兴趣的:(函数进阶:递归函数,纯函数,匿名函数,偏函数)