【问题标题】:Is there a way to store similar functions in a dictionary with a loop?有没有办法用循环将类似的函数存储在字典中?
【发布时间】:2019-12-12 13:26:59
【问题描述】:

假设您有一系列类似的函数:

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)}

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

【问题讨论】:

    标签: python function loops dictionary


    【解决方案1】:

    我想你正在搜索这个:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-19
        相关资源
        最近更新 更多