偏函数#

在某些使用场景中,可能需要将一个函数及其某些参数一起收集在一个变量中以便稍后执行。functools的partial()使这成为可能。

from functools import partial

为了演示它,我们定义一个示例函数。

def compute_sum(a, b):
    return a + b

然后我们可以将该函数与参数组合的partial对象存储在一个变量中。

sum_of_3_and_4 = partial(compute_sum, 3, 4)

这个对象是可调用的

sum_of_3_and_4()
7

保持参数未设置#

也可以只部分指定参数。

sum_of_3_and_b = partial(compute_sum, 3)
sum_of_3_and_b(9)
12

传递关键字参数#

它也适用于关键字参数。

sum_of_a_and_4 = partial(compute_sum, b=4)
sum_of_a_and_4(5)
9
sum_of_a_and_4(a=1)
5

练习#

编写一个函数来确定两点之间的欧几里得距离。之后,使用partial传递一个固定点,并使用for循环打印出一系列点的距离。

fixed_point = (1, 1, 1)
list_of_points = [(2,1,1), (1,1,3), (2,2,2)]