Skip to main content
 首页 » 编程设计

python之在 python 中调用一百个不同函数的优雅/pythonic 方式

2025年05月04日27mayingbao

我有一百个独特的函数,我们称它们为 func_{i}() 其中 {i} 是函数的编号,例如 func_56 ()。我有一个循环,我基本上需要这样做:

for item in list: 
    values[0] = func_0(item,values[0])  
    values[1] = func_1(item,values[1]) 
    ... 
    values[99] = func_99(item,values[99]) 

执行此操作的最 pythonic 方法是什么?我能想到:

for item in list: 
    for i in range(100): 
        values[i] = eval('func_' + str(i) + '(item, values[i]') 

但是 eval() 通常不被认为是好的做法。

或者:

function_list = [func_0, func_1 .... ] # is there a way of doing this programmatically? 
for item in list: 
    for i in range(100): 
        values[i] = function_list[i](item, values[i]) 

但是手动构建函数列表看起来仍然很丑陋,eval() 似乎是唯一的方法。即便如此,这个代码片段似乎可以变得更加优雅和 pythonic,这可能不是最有效的做事方式。

出于这个问题的目的,可以安全地假设每个 func_{i}() 都是完全唯一的,并且没有办法让它们共享代码,也没有办法将其压缩为少于 100 个独特的功能。

请您参考如下方法:

for item in list: 
    for i in range(100): 
        values[i] = locals()["func_%d" % (i)](item, values[i]) 

根据函数的定义方式,您可以使用 locals() 或 globals() 或 getattr(some_module, "func_%d"% ( i)).