**偏函数(Partial function)** 在函数的参数那一讲,我们通过为参数设定默认值的办法来降低函数调用的难度,其实偏函数完全可以实现这种功能。 来个示例: 求余数,使用关键字传参 ~~~ >>> def mod(x,m=2): ... return x%m ... >>> mod(3) 1 ~~~ 现在有**大量的计算需要对 3 求余数**,**又想少传递参数**,是不是需要把上面的函数重写修改下默认值呢? ~~~ >>> def mod3(x,m=3): ... return x%m ... >>> mod(4) 1 ~~~ 可以是可以,有木有发现很多代码重复呢?现在偏函数就非常有用了 ~~~ >>> from functools import partial >>> mod3 = partial(mod, m=3) >>> mod3(4) 1 ~~~ 从结果可知:我们实现了我们想要的功能,其实调用 ~~~ mod3(4) ~~~ 相当于 ~~~ kw = { 'm': 3 } int(4, **kw) ~~~ 假设我们在编写偏函数时是这样定义的 ~~~ >>> mod3 = functools.partial(mod, 3) ~~~ 其实创建偏函数时,实际上可以接收【函数对象】、【*args】和【**kwargs】这3个参数 这样的定义实际上相当于把 3 这个参数付给了函数 mod(x,m=2) 中的 x 参数,m参数还是2 我们调用 ~~~ mod3() ~~~ 相当于调用 ~~~ mod(3,2) ~~~ 实例说明 ~~~ >>> mod3 = functools.partial(mod, 3) >>> mod3(4) #mod(3,4) 3 >>> mod3()#mod(3,2) 1 >>> mod3(1)#mod(3,1) 0 ~~~ 总结: 当函数的参数个数过多需要简化时,可以使用 functools.partial 来创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而达到在调用时更简单。