假设您有一系列类似的功能:
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)}
有效,但这是一个好习惯吗?
答案 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)}