例如,我尝试过像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'])