32 lines
900 B
Python
32 lines
900 B
Python
|
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))
|