我想使用functools.partial
来减少我的函数之一中的参数数量。这很重要:一个或多个kwargs
可能是函数本身。这就是我的意思:
from functools import partial
def B(alpha, x, y):
return alpha(x)*y
def alpha(x):
return x+1
g = partial(B, alpha=alpha, y=2)
print(g(5))
这将引发错误:
TypeError:B()为参数'alpha'获得了多个值
partial
是否可以将函数用作提供的参数?如果没有,或者没有比partial
更通用的解决方法?谢谢
partial
本身不知道应该为x
分配给定的位置参数,只是因为您为alpha
指定了关键字参数。如果希望alpha
是特定函数,则将该函数作为位置参数传递给partial
。
>>> g = partial(B, alpha, y=2)
>>> g(5)
12
[g
等效于
def g(x):
return alpha(x) * 2 # == (x + 1) * 2