Python functools.partial()


一、问题

减少调用函数时的参数个数。



二、解决方案

functools.partial() 函数允许给一个或多个参数设置固定的值,减少被调用是的参数个数。

def test(a, b, c, d):
    print(a, b, c, d)

from functools import partial
s1 = partial(test, 1)
s1(2, 3, 4)

s2 = partial(test, d=4)
s2(1, 2, 3)

s3 = partial(test, 1, 2, d=4)
s3(3)

输出:

1 2 3 4
1 2 3 4
1 2 3 4

partial 固定参数值返回一个新的函数,新函数接受未赋值的参数,最后将所有参数传递给原函数。



三、讨论

实例:计算两点间距离。

import numpy as np
from functools import partial

points = [(1, 2), (3, 4), (5, 6), (7, 8)]

def distance(p1, p2):
    x1, y1 = p1
    x2, y2 = p2
    return np.hypot(x2-x1, y2-y1)

以某个点为基点,根据点与基点的距离排序。

sort()只接受一个参数,而distance()需要两个参数,所以用partial()来解决。

(sorted()cmp接受两个参数,用key接受一个参数。)

basepoint = (4, 3)
points.sort(key=partial(distance, basepoint))
print(results)

输出:

[(3, 4), (1, 2), (5, 6), (7, 8)]


posted @   做梦当财神  阅读(446)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示