Zac*_*ack 48 python dictionary dispatch
例如,我尝试了类似的东西mydict = {'funcList1': [foo(),bar(),goo()], 'funcList2': [foo(),goo(),bar()]
,但是没有用.
有这种功能的某种结构吗?
我意识到我可以用一堆def
语句轻松地做到这一点:
def func1():
foo()
bar()
goo()
Run Code Online (Sandbox Code Playgroud)
但是我需要的陈述数量变得非常笨拙且难以记住.将它们很好地包装在字典中会很好,我可以一次又一次地检查键.
Pra*_*ota 116
函数是Python中的第一类对象,因此您可以使用字典进行调度.例如,if foo
和bar
是函数,并且dispatcher
是这样的字典.
dispatcher = {'foo': foo, 'bar': bar}
Run Code Online (Sandbox Code Playgroud)
请注意,值是foo
和bar
哪些是函数对象,而NOT 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'])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
57543 次 |
最近记录: |