2026-10-20 11:16:44
functools.partial 是 Python 中用于固定函数部分参数的工具,通过生成一个新函数实现“分步传参”,简化重复性参数传递。以下是其核心用法和三步走战法:
一、核心作用原函数需接受多个参数,例如:
def my_sum(a, b): print("a=", a) print("b=", b) return a + b3. 创建偏函数并调用参数绑定顺序
partial 按位置绑定参数。例如 partial(my_sum, 10) 固定的是第一个参数 a。
若需固定关键字参数,需显式指定:
new_my_sum_kw = partial(my_sum, b=10) # 固定 b=10res_kw = new_my_sum_kw(a=20) # 调用 my_sum(20, 10)与默认参数的区别
partial 是运行时动态绑定,而默认参数是函数定义时静态设置。
偏函数更灵活,可基于不同场景生成多个定制化函数。
应用场景
简化重复调用:如固定日志级别、文件路径等。
from functools import partialimport logginglog = partial(logging.log, level=logging.INFO)log("This is an info message") # 无需每次写 level=logging.INFO适配接口:当函数参数与第三方库要求不匹配时,用偏函数调整。
# 假设某库要求函数接受 (data, axis), 但你的函数是 (axis, data)original_func = lambda axis, data: sum(data) / axisadapted_func = partial(original_func, data=[1, 2, 3])adapted_func(axis=3) # 计算 (1+2+3)/3若需在类方法中固定参数,可用 functools.partialmethod:
from functools import partialmethodclass Calculator: def add(self, a, b): return a + b # 固定 a=10 的方法 add_ten = partialmethod(add, 10)calc = Calculator()print(calc.add_ten(5)) # 输出 15 (相当于 add(10, 5))通过三步走战法,可高效掌握 functools.partial 的用法,告别重复传参,提升代码简洁性。