【发布时间】:2017-11-03 18:59:25
【问题描述】:
我有子函数的树类型:
- 一个没有任何参数(参数),
- 一个参数秒
- 第三个有多个参数(元组)
我正在尝试将该函数及其参数传递给另一个函数,该函数对所有子函数的结果求和并返回总和值。 该函数中的参数应该是:每个子函数的名称作为位置参数 (*args),每个子函数的参数作为键值参数 (*kvargs)。
示例:
def no_arg()
def one_arg(a)
def multiple_args(a, b, c, e, f)
# execution of function_results_sum:
function_results_sum(
no_arg, one_arg, multiple_args,
one_arg=23,
multiple_args=(1, 2, 3, 4, 5))
到目前为止我做了什么:
def no_arg():
return 5
def ident(x):
return x
def mult(x, y):
return x * y
def function_results_sum(*args, **kwargs):
return no_arg() + ident(kwargs[ident.__name__]) + mult(*kwargs[mult.__name__])
上面的代码将参数传递给每个子函数,但是子函数名称是硬编码的。我想修改当前代码以便能够从 *args 获取函数名称。下面我写了一个伪代码来表达我想要实现的目标:
def function_results_sum(*args, **kwargs):
for functionName in args:
result = sum(funcionName(kwargs))
return result
我已经花了一整天的时间来解决这个问题,所以请不要写信告诉我“使用 google 不会造成伤害” ;)
【问题讨论】:
-
它是否总是三个函数,每个类型之一?请注意,如果您不在 Python 3.6 上,您想要的签名可能会很棘手,否则,无法保证 kwargs 的顺序。
-
我使用的是 Python 3.6。顺序始终相同。
标签: python function args keyword-argument