考虑以下一段使用functools.partial()
:的代码
import functools
def add(a, b):
return a + b
add_10 = functools.partial(add, a=10)
add_10(4)
当我运行它时,我得到了以下错误:
Traceback (most recent call last):
File "test.py", line 7, in <module>
add_10(4)
TypeError: add() got multiple values for argument 'a'
当我在倒数第二行将关键字参数更改为位置参数时,它通过:
add_10 = functools.partial(add, 10)
为什么第一种情况不通过?我使用的是Python 3.4。
import functools
def add(a, b):
return a + b
add_10 = functools.partial(add, b=10)
add_10(4)
此代码将起作用。具有默认值的函数参数必须位于末尾。所以b=10而不是a=10