应用functools.partial()后,“TypeError:获取参数的多个值”

时间:2014-10-03 15:32:12

标签: python

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

1 个答案:

答案 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