gpt4 book ai didi

python - 将函数及其参数传递给另一个函数

转载 作者:行者123 更新时间:2023-12-01 02:28:27 26 4
gpt4 key购买 nike

我有子功能的树类型:

  • 没有任何参数(参数),
  • 第二个只有一个参数
  • 第三个具有多个参数(元组)

我试图将该函数及其参数传递给另一个函数,该函数对所有子函数的结果求和并返回总和值。该函数中的参数应该是:每个子函数的名称作为位置参数(*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

我已经花了一整天的时间来解决这个问题,所以请不要给我写信“使用谷歌不会造成伤害”;)

最佳答案

像这样的东西会起作用:

def no_arg():
return 5

def one_arg(x):
return x

def multiple_args(x, y):
return x * y

def function_results_sum(*args, **kwargs):
result = 0
for func in args:
result += func(*kwargs[func.__name__])
return result

输出:

function_results_sum(
no_arg, one_arg, multiple_args,
no_arg=(),
one_arg=(23, ),
multiple_args=(1,5))

33

您所要求的唯一区别是您必须将参数放入元组中,然后将其解压为参数以便稍后传递。

如果您不想为无参数函数提供任何内容,您可以仔细检查函数名称是否在 kwargs 中:

def function_results_sum(*args, **kwargs):
result = 0
for func in args:
if func.__name__ i kwargs:
result += func(*kwargs[func.__name__])
else:
result += func()
return result

关于python - 将函数及其参数传递给另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47102769/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com