如何高效循环调用数组中需不同参数的函数?
循环调用带不同参数的函数集合解决方案
直接把函数和它对应的参数绑定存储在字典里,就能避免传冗余参数或者写大量if else,循环时直接取出调用即可。
方案一:字典存储函数+参数列表
这种方式适合参数需要动态更新的场景:
def a_func(x1): return x1 def b_func(y1): return y1 mylist=['A','B'] def main(x1, y1): # 构建函数与对应参数的映射 func_param_map = { 'A': (a_func, [x1]), 'B': (b_func, [y1]) } results = [] for key in mylist: func, args = func_param_map[key] value = func(*args) # 解包参数列表传递给函数 results.append(value) return results
方案二:用lambda提前绑定参数
如果参数在main内是固定的,用lambda包装成无参函数更简洁:
def a_func(x1): return x1 def b_func(y1): return y1 mylist=['A','B'] def main(x1, y1): func_map = { 'A': lambda: a_func(x1), 'B': lambda: b_func(y1) } results = [] for key in mylist: value = func_map[key]() results.append(value) return results
扩展说明
后续函数数量增加到20个时,只需要在映射字典里新增对应的键值对即可,完全不需要修改循环逻辑,扩展性拉满。
内容的提问来源于stack exchange,提问作者alternative4
相关产品推荐
相关产品推荐

