我有一些问题:
如何使用相同的参数调用多个函数(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 除了函数列表。
一些不同的、更好的解决方案?装饰者?
问候!
您可以使用装饰器构建该函数列表:
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)
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |