"TypeError: got multiple values for argument"应用 functools.partial() 后



考虑以下一段使用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

最新更新