partial用于将原函数声明的参数值固定。
使用规则:
要遵循形参的顺序规则:位置参数 -> 默认值参数 -> 关键字参数
具体用法:
- 将前面连续的参数固定,就可以直接继续按照原来的参数继续调用。如
from functools import partial def test(a,b,c,d): return a,b,c,d new_test=partial(test,1,2) print(new_test(3,4)) # (1, 2, 3, 4)
-
将后面的连续参数固定,就可以直接继续使用原来的参数进行调用。如
new_test=partial(test,c=1,d=2) print(new_test(3,4)) #(3, 4, 1, 2)
-
如果默认参数值不是连续的或者是直接对前面的连续参数赋值,那么就需要使用关键字参数进行调用,如
new_test=partial(test,b=1,d=2) print(new_test(a=3,c=4)) #(3, 1, 4, 2)
-
如果不遵循形参顺序规则,则报错
new_test=partial(test,b=1) print(new_test(2,3,4)) TypeError: test() got multiple values for argument 'b'
关键字参数放在了位置参数前面,所以报错。改为
print(new_test(2,c=3,d=4)) 就可以了,结果为(2, 1, 3, 4)。