例如,我尝试过类似的方法mydict = {'funcList1': [foo(),bar(),goo()], 'funcList2': [foo(),goo(),bar()]
,但它不起作用。
是否有某种结构具有这种功能?
我意识到我显然可以用一堆def
语句轻松地做到这一点:
def func1():
foo()
bar()
goo()
但是我需要的语句数量变得非常笨拙且难以记住。将它们很好地包装在字典中会很好,我可以不时检查键。
例如,我尝试过类似的方法mydict = {'funcList1': [foo(),bar(),goo()], 'funcList2': [foo(),goo(),bar()]
,但它不起作用。
是否有某种结构具有这种功能?
我意识到我显然可以用一堆def
语句轻松地做到这一点:
def func1():
foo()
bar()
goo()
但是我需要的语句数量变得非常笨拙且难以记住。将它们很好地包装在字典中会很好,我可以不时检查键。
函数是 Python 中的第一类对象,因此您可以使用字典进行调度。例如 iffoo
和bar
are 函数,anddispatcher
是这样的字典。
dispatcher = {'foo': foo, 'bar': bar}
请注意,值是foo
和bar
是函数对象,而不是foo()
和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'])