有没有一种方法可以将函数存储在列表或字典中,以便在调用索引(或键)时会触发存储的函数?
例如,我已经尝试过类似的方法mydict = {'funcList1': [foo(),bar(),goo()], 'funcList2':
[foo(),goo(),bar()]
,但这种方法不起作用。
具有这种功能的某种结构吗?
我意识到我显然可以用一堆def
语句来轻松做到这一点:
def func1():
foo()
bar()
goo()
但是我需要的语句数量变得非常笨拙且难以记住。最好将它们很好地包装在字典中,这样我可以一次又一次地检查它们的键。
-
函数是Python中的一流对象,因此您可以使用字典进行分派。例如,if
foo
和bar
是函数,并且dispatcher
is像这样的字典。dispatcher = {'foo': foo, 'bar': bar}
请注意,值are
foo
和bar
are是函数对象,而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'])