偏函数:
它是对原始函数的二次封装,是将现有函数的部分参数预先绑定为制定值,从而得到一个新的函数,该函数就称为偏函数。
相比原函数,偏函数具有较少的可变参数,从而降低了函数调用的难度
语法格式:
偏函数名 = partial(func, *args, **kwargs)
应用案例:
# 过滤出数组内指定内容
filter(lambda x: x > 3, li1)
# 现有三个数组
li1 = [1, 2, 3, 11, 22, 33]
li2 = [2, 3, 4, 22, 33]
li3 = [3, 4, 5, 33, 44, 55]
# 普通方法需要执行3次
filter(lambda x: x > 5, li1)
filter(lambda x: x > 5, li2)
filter(lambda x: x > 5, li3)
# 将其写为函数,每次只需要调用函数传参
def filter2(iter):
return filter(lambda x: x > 5, iter)
filter2(li1)
filter2(li2)
from functools import partial
# 通过偏函数创建一个新函数,提前传入原函数所需要的参数,让我们在调用的时候更加简单。
filter3 = partial(filter, lambda x: x > 5)
print(list(filter3(li1)))
闭包函数:
特征:
- 函数中嵌套一个函数
- 外层函数rertun返回 内层函数
- 内层函数有引用 外部作用域 的非全局变量
闭包函数 = 函数 + 保存引用数据的封闭作用域
简单案例:
def funcB1():
x = 100
def funcB2():
c = x * 2
print(c)
return funcB2