2025-09-10:仓库迁移
This commit is contained in:
31
7.函数/8.让有n个参数的可调用对象以较少的参数被调用.py
Normal file
31
7.函数/8.让有n个参数的可调用对象以较少的参数被调用.py
Normal file
@@ -0,0 +1,31 @@
|
||||
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))
|
Reference in New Issue
Block a user