python – 有没有办法将函数存储在列表或字典中,以便在调用索引(或键)时触发存储的函数?

例如,我尝试过像mydict = {‘funcList1’:[foo(),bar(),goo()],’funcList2’:[foo(),goo(),bar()]这样的东西不行.

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

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

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

但是我需要的陈述数量变得非常笨拙且难以记住.将它们很好地包装在字典中会很好,我可以一次又一次地检查键.

解决方法:

函数是Python中的第一类对象,因此您可以使用字典进行调度.例如,如果foo和bar是函数,则dispatcher就是这样的字典.

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

请注意,值是foo和bar,它们是函数对象,而NOT foo()和bar().

要调用foo,你可以做调度程序[‘foo’]()

编辑:如果你想运行存储在列表中的多个函数,你可以做这样的事情.

dispatcher = {'foobar': [foo, bar], 'bazcat': [baz, cat]}

def fire_all(func_list):
    for f in func_list:
        f()

fire_all(dispatcher['foobar'])
上一篇:Django 的 cbv


下一篇:相机权限请求时,未在主线程的bug