partial函数的作用就是:将所作用的函数作为partial()函数的第一个参数,原函数的各个参数依次作为partial()函数的后续参数,原函数有关键字参数的一定要带上关键字,没有的话,按原有参数顺序进行补充。
(1)第一部分也就是第一个参数,是一个函数,这个函数可以是你定义的,也可以是Python内置函数
(2)第二部分是一个可变参数,*args,比如内置函数max的参数就是一个可变参数,max(1,2,3,4,5)=5
f1 = partial(max,1,2,100)
print(f1(10,101)) # 101
print(f1(10,20)) # 100
(3)第三部分是一个关键字参数
from functools import partial
def multiply(a, b):
return a * b
if __name__ == '__main__':
# 固定全部参数
f = partial(multiply, a=1, b=2)
result2 = f(a=10) # 20
print(result2)
result3 = f(b=10) # 10
print(result3)
result4 = f(a=10,b=6) # 60
print(result4)
result1 = f(10) # 报错:got multiple values for argument 'a',按位置参数传参,10传给a参数
print(result1)
# 固定部分参数
f2 = partial(multiply, b=2)
result2 = f2(a=10) # 20
print(result2)
result3 = f2(b=10) # 报错:missing 1 required positional argument: 'a'
print(result3)
result4 = f2(a=10,b=6) # 60
print(result4)
result1 = f2(10) #20,10传给了a参数
print(result1)
# 固定位置参数
f3 = partial(multiply, 2) # 按位置参数传参,2传给了a参数,不可更改
result2 = f3(a=10) # 报错:missing 1 required positional argument: 'a'
print(result2)
result3 = f3(b=10) # 20
print(result3)
result4 = f3(a=10,b=6) # 报错:missing 1 required positional argument: 'a',a=2不可再传参
print(result4)
result1 = f3(10) #20,10传给了b参数
print(result1)