函数可以是python部分中的kwarg之一吗?

问题描述 投票:0回答:1

我想使用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更通用的解决方法?谢谢

python functional-programming partial
1个回答
0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.