たとえば、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
であり、foo()
とbar()
ではないことに注意してください。
foo
を呼び出すには、dispatcher['foo']()
を実行します。
編集:リストに保存されているmultiple関数を実行する場合は、このようなことを行うことができます。
_dispatcher = {'foobar': [foo, bar], 'bazcat': [baz, cat]}
def fire_all(func_list):
for f in func_list:
f()
fire_all(dispatcher['foobar'])
_