所以我正在尝试理解partial
:
import functools
def f(x,y) :
print x+y
g0 = functools.partial( f, 3 )
g0(1)
4 # Works as expected
输入:
g1 = functools.partial( f, y=3 )
g1(1)
4 # Works as expected
输入:
g2 = functools.partial( f, x=3 )
g2(1)
TypeError: f() got multiple values for keyword argument 'x'
如果我使用 y
作为关键字参数,TypeError
将消失:
代码段:
g2( y=1 )
4
什么会导致
TypeError
错误?
*args
或**kwargs
参数,否则你不能仅仅传递任意参数给一个函数。如果一个函数有关键字参数(name=some_default
),那么你不必为它们提供任何东西,如果你省略它们,它们已经有了默认值。 - Martijn Pietersmy_partial_function(param_name=param)
。 - chiffa