有没有一种方法可以将函数存储在列表或字典中,以便在调用索引(或键)时会触发存储的函数?

发布于 2021-01-29 14:55:38

例如,我已经尝试过类似的方法mydict = {'funcList1': [foo(),bar(),goo()], 'funcList2': [foo(),goo(),bar()],但这种方法不起作用。

具有这种功能的某种结构吗?

我意识到我显然可以用一堆def语句来轻松做到这一点:

def func1():
    foo()
    bar()
    goo()

但是我需要的语句数量变得非常笨拙且难以记住。最好将它们很好地包装在字典中,这样我可以一次又一次地检查它们的键。

关注者
0
被浏览
153
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    函数是Python中的一流对象,因此您可以使用字典进行分派。例如,iffoobar是函数,并且dispatcheris像这样的字典。

    dispatcher = {'foo': foo, 'bar': bar}
    

    请注意,值arefoobarare是函数对象,而NOTfoo()bar()

    打电话foo,你可以做dispatcher['foo']()

    编辑:如果您要运行列表中存储的 多个 功能,则可以执行以下操作。

    dispatcher = {'foobar': [foo, bar], 'bazcat': [baz, cat]}
    
    def fire_all(func_list):
        for f in func_list:
            f()
    
    fire_all(dispatcher['foobar'])
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看