如果一个函数带了一些参数,在大部分使用场景中,某个参数的值是固定的,那我们有两种简化办法:
-
参数默认值
即在原始函数定义的地方,对应参数处设置paramx=default。但是有一点不好,如果paramx设置了默认值,这个参数之后的其他参数也要跟着设置默认值。
整体而言,对原有函数有改动。
-
偏函数
使用functools.partial(original_fuc,param1,param....)
在原有函数基础上生成一个偏函数。所谓偏函数,就是以原函数为基础,将某个位置上的参数固定住(默认是从第一个参数固定),后续参数重新扩展传递给原函数,对外则是生成一个新函数。
比如:
def add(a,b): return a+b
这是两数相加的函数,现在我们要用一个函数,输入一个参数,返回这个参数+5的结果。
参数默认值的方法可以这样写:
def add(a,b=5): return a+b
但原函数本来就是两数相加,即使现在可能一个参数+5的场景用的多,给被加数给个默认值5,也是很突兀的写法。
我们也可以新写一个函数:
def add5(a): return a+5
这样新创建一个函数,倒也没什么,但是对原有add函数复用不高。
使用偏函数可以这样写:
import functools add5 = functools.partial(add, b=5) #test add5 ret = add5(10) print(ret)
通过partial中b=5,将参数b的值固定下来。