python学习过程中的tips(二):有用的偏函数应用(partial)

在python中,我们会用到一些函数,如func(a,b,c,d,e),它们常常会有多个参数,默认参数或者是可变参数,而我们只是对其中几个参数感兴趣,一般用法,我们每次调用func时,都需要对每个参数进行指定,如果我们需要多次调用时,这种做法就有些枯燥了,而偏函数应用就可以解决这个问题。

使用偏函数,相当于重新定义一个具有相同功能,但部分参数被设为默认参数或内置常量的函数。

例如,我们定义func如下:

def func(x,a=None,b=None,c=None,d=None,e=None):
    return a*x+b*x+c*x+d*x+e*x

现在我们计算当a=b=c=d=e=1,x=1,5,9时函数值和a=b=c=d=e=2,x=2,6,11时函数值,一般地,可以这样:

func(1,a=1,b=1,c=1,d=1,e=1)
5
func(5,a=1,b=1,c=1,d=1,e=1)
25
func(9,a=1,b=1,c=1,d=1,e=1)
45

func(4,a=2,b=2,c=2,d=2,e=2)
40
func(6,a=2,b=2,c=2,d=2,e=2)
60
func(11,a=2,b=2,c=2,d=2,e=2)
110

而使用偏函数应用,我们有另外一种方法:

from functools import partial

par_func2=partial(func,a=1,b=1,c=1,d=1,e=1)##如果此处不指定关键字,参数将按func中的顺序依次固定

par_func2(1)
5
par_func2(5)
25
par_func2(9)
45

par_func2=partial(func,a=2,b=2,c=2,d=2,e=2)

par_func2(4)
40
par_func2(6)
60
par_func2(11)
110

 是不是整洁了好多?

注意,如果partial中不指定关键字,那么参数将按照函数中的顺序依次固定,如若有par_func=partial(func,1,2,3),那么func中参数a,b,c将被固定为1,2,3,在使用par_func时,剩余参数仍需传入,如par_func(x,d,e)

猜你喜欢

转载自blog.csdn.net/zhuzhongzhuo/article/details/85724209