当我们想要把一个函数的某些参数固定下来,形成一个新的函数,这时候 Python 的 functools
模块中的 partial()
函数就可以派上用场了。
partial()
函数使用方法如下:
functools.partial(func, *args, **keywords)
其中:
func
表示要进行部分固定参数的函数;*args
表示固定函数参数中的位置参数;**keywords
表示固定函数参数中的关键字参数。
下面我们来看一些使用 partial()
函数的示例:
示例一
假设有一个函数 add()
,实现两个数的加法。现在我们要固定其中一个数值为 1,并形成一个新的函数 add_1()
。
from functools import partial
def add(x, y):
return x + y
add_1 = partial(add, 1)
print(add_1(2)) # 输出3
在上述例子中,我们使用了 partial(add, 1)
将 add()
函数的第一个参数固定为 1,得到一个新的函数 add_1()
,最后调用 add_1(2)
得到 3。
示例二
假设我们有一个列表 names
,其中包含多个字符串,每个字符串都需要经过以下操作:
- 首字母大写;
- 去掉末尾的空格。
我们可以使用 map()
函数来完成这个操作,但结合 partial()
函数可以让代码更简洁:
from functools import partial
names = [' alice ', 'bob', ' charlie ']
titleize = partial(str.title)
strip = partial(str.strip)
processed_names = list(map(strip, map(titleize, names)))
print(processed_names)
在上述例子中,我们使用 partial(str.title)
和 partial(str.strip)
把字符串的首字母大写和去除空格两个操作分别创建了一个新的函数 titleize()
和 strip()
,使得代码更加简单易读。
最后调用 map()
函数完成批量处理,得到处理后的结果 ['Alice', 'Bob', 'Charlie']
。
以上是使用 partial()
函数的两个示例,希望可以对你理解 partial()
函数的用法有所帮助。