递归函数: 直接或者间接调用函数本身的函数.
# 斐波契纳 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) # 按关键字进行传参.
网友评论