如何使用相同的参数正确调用多个函数?

tom*_*omm 0 python function

我有一些问题:

如何使用相同的参数调用多个函数(10,100、1000 个函数)?

只是一个例子:

def function1(arg):
return arg

def function2(arg):
    return arg*2

def function_add_arg(arg):
    return np.sum(arg)


def call_functions(values):

    result = (function1(values), function2(values), function_add_arg(values))
    return result

values = [1, 2, 3, 4]
result_tuple = call_functions(values)
Run Code Online (Sandbox Code Playgroud)

如果我有 1000 个不同名称的函数怎么办?(Function_a, f2, add) 所以你不能使用:

result = (eval(f'function_{i}({values})') for i in range(100))
Run Code Online (Sandbox Code Playgroud)

我对这个例子的解决方案(它不是最好的,只是为了展示我的想法):

def call_functions(function_list, values):
    result = tuple((function(values) for function in function_list))
    return result

function_list = [function1, function2, function_add_arg]
values = [1, 2, 3, 4]

result_tuple = call_functions(function_list, values)
Run Code Online (Sandbox Code Playgroud)

但是怎么做才正确呢?(特别是如果我会调用更多函数)

不同的解决方案是使用 **kwargs 除了函数列表。

一些不同的、更好的解决方案?装饰者?

问候!

sup*_*ain 6

您可以使用装饰器构建该函数列表:

function_list = []
def register(function):
    function_list.append(function)
    return function

@register
def function1(arg):
    return arg

@register
def function2(arg):
    return arg*2

...
Run Code Online (Sandbox Code Playgroud)