使用参数数量可变的函数字典-我可以在这里使用分部函数吗



如果我有一个函数字典,比如:

func_dict = {
"sum": lambda x, y: x + y,
"multiply": lambda x, y: x * y,
"double": lambda x: x*2
}
func_dict["sum"](1, 2)
# outputs 3
# cannot do
[func_dict[i](x, y) for i in list_of_funcs_to_run]

每一个都有相似但略有变化的自变量,我(从例如[这里][1](收集到,我可以使用functools.partial将字典定义为:

y = 1 # or whatever
func_dict = {
"sum": partial(lambda x, y: x + y, y=y),
"multiply": partial(lambda x, y: x * y, y=y),
"double": lambda x: x*2
}
func_dict["sum"](1)
# outputs 3
# now can do
[func_dict[i](x) for i in list_of_funcs_to_run]

我现在遇到的情况是:1(列表中存储了多个xy(这样我就可以运行[sum(i,j) for i,j in zip(x,y)](,但我不一定知道字典实例化时的值(例如,函数字典可能是类属性,我需要在制定xy列表后在类方法中调用字典(。

有没有一种方法我仍然可以在这里使用partial(或另一种方法(来保留变量参数的字典,并像[func_dict[i](x) for i in list_of_funcs_to_run]一样一次性调用所有函数?每次创建新的xy变量时,我只能考虑声明函数字典,例如

for i in list_of_funcs_to_run:
x = ...
y = ... 
func_dict = ... # define func_dict with partials here
[func_dict[i](x) for i in list_of_funcs_to_run]

谢谢![1] :在Python 中使用字典调用带参数的函数

与其动态创建部分函数,不如让所有lambdas/函数接受相同数量的参数来修复第一个用例。

func_dict = {
"sum": lambda x, y: x + y,
"multiply": lambda x, y: x * y,
"double": lambda x, _: x*2
}

我们将未使用的第二个参数添加到";双";λ。使用_作为参数名称是未使用/忽略的参数的惯例

相关内容

最新更新