0 前言
partial是Python functools 模块中的一个高阶函数。 它对普通函数进行封装, 主要功能是把一个函数的部分参数给固定住,返回一个新的函数。
通俗点说, 就是冻结
原函数的某些参数。
该函数形式如下:
functools.partial(func[,*args][, **kwargs])
其中func
是定义的函数。
1 应用
初次用这个函数, 可能都会有一些疑问, 直接调原函数就好了, 为什么搞这么复杂?
举个简单的例子, 可能就更好理解了。例如, 你实现了一个乘法函数, 实现2个数相乘:
def mul(x, y):
return x*y
计算1x2,mul(1,2)
计算4x2,mul(4,2)
你可能已经发现了, 这样写显得比较重复。
给y赋个默认值就可以避免重复。
def mul(x, y=2):
return x*y
计算1x2,mul(1)
计算4x2,mul(4)
但是这样也有个问题, 假设y值变了, 还得修改函数, 否则就得重复。
partial
函数就可以解决这个问题。
mul2 = partial(mul, y=2)
计算1x2,mul2(1)
计算4x2,mul2(4)
假设y初始值变为3, 只需要通过partial
生成一个新的函数就好了。
mul3 = partial(mul, y=3)
总结一下, partial
的作用就是把一个函数的部分参数给固定住,返回一个新的函数。在不改变原始函数的情况下, 生成一些新的函数。