考虑以下使用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。
答案 0 :(得分:6)
import functools
def add(a, b):
return a + b
add_10 = functools.partial(add, b=10)
add_10(4)
此代码可以使用。具有默认值的函数参数必须在结尾处。所以b = 10而不是a = 10