import math from functools import partial # 假设我们有这样一个函数 def spam(a, b, c, d): print(a, b, c, d) if __name__ == '__main__': # 这个函数的输入参数有一大堆,但是其中几个是固定的,那就有用了 s1 = partial(spam, 1) #固定a=1 s2 = partial(spam, d=2) # 固定d=2 s3 = partial(spam, 3, 3, d=3) # 固定a=3 b=3 d=3 s1(2,3,4) s2(1,2,3) s3(1) # partial返回的是一个被填充了部分参数的函数,参数数量等于被包装的函数的剩余参数个数 # 这个函数可以用来适配一些参数数量受限的复用场景, 比如sorted函数的key参数仅支持单参数函数 points = [(1, 2), (3, 4), (5, 6), (7, 8)] def dis (p1, p2): x1, y1 = p1 x2, y2 = p2 return math.hypot(x2-x1, y2-y1) pt = (4, 3) s = partial(dis, pt) print(sorted(points, key=s))