functools.partial
是 Python 的 functools
模块中的一个非常有用的函数,它用于部分应用一个函数。这意味着你可以创建一个新的函数,这个新函数是原函数的一个子集,即预先填充了原函数的一些参数,并返回这个新函数。这样,当你调用这个新函数时,你只需要提供那些未被预先填充的参数即可。
使用 functools.partial
的好处包括:
-
代码重用:通过预先填充一些参数,你可以轻松地重用同一个函数的不同变体,而无需编写额外的包装函数。
-
参数默认值:虽然 Python 允许函数参数有默认值,但使用
partial
可以让你在运行时动态地设置这些默认值,而不是在函数定义时静态地设置。 -
更清晰的调用:当函数有很多参数,而你总是使用相同的几个参数值时,使用
partial
可以让你的函数调用更加清晰和简洁。
示例
假设你有一个计算矩形面积的函数:
def rect_area(width, height): return width * height
from functools import partial # 创建一个新的函数,它总是将 width 设置为 10
ten_wide_rect = partial(rect_area, width=10) # 现在,你可以像调用普通函数一样调用 ten_wide_rect,但只需要提供 height 参数
print(ten_wide_rect(5)) # 输出: 50