有没有办法在带有循环的字典中存储类似的功能?

时间:2019-12-12 13:26:59

标签: python function loops dictionary

假设您有一系列类似的功能:

def cos_fit1(*args, **kwargs):
    pass

def cos_fit2(*args, **kwargs):
    pass

# and so on..

def cos_fit8(*args, **kwargs):
    pass

我想将它们放入字典中。目前已通过以下方式完成:

func_dict = {
1 : cos_fit1,
2 : cos_fit2
# and so on..
}

我想知道,有没有更优雅的方法?显然,这确实非常糟糕。 我已经尝试过了,但这只是函数名,它是字典中的字符串。

func_dict = {i : f'cos_fit{i}' for i in range(1, 8)}

编辑:

func_dict = {i : eval(f'cos_fit{i}') for i in range(1, 8)}

有效,但这是一个好习惯吗?

2 个答案:

答案 0 :(得分:1)

我认为您正在搜索:

index_position = len("cos_fit")
func_dict = {int(name[index_position:]): globals()[name]
             for name in globals()
             if name.startswith("cos_fit")}

答案 1 :(得分:-1)

是的,但是为什么要这样做?

func_dict = {f'cos_fit{i}': lambda *args, **kwargs: "" for i in range(8)}