Par exemple, j'ai essayé des choses comme mydict = {'funcList1': [foo(),bar(),goo()], 'funcList2': [foo(),goo(),bar()]
, qui ne fonctionne pas.
Existe-t-il une sorte de structure avec ce type de fonctionnalité?
Je me rends compte que je pourrais évidemment le faire tout aussi facilement avec un tas d'instructions def
:
def func1():
foo()
bar()
goo()
Mais le nombre de déclarations dont j'ai besoin devient assez lourd et difficile à retenir. Ce serait bien de les envelopper joliment dans un dictionnaire dont je pourrais examiner les clés de temps en temps.
Les fonctions sont des objets de première classe dans Python et vous pouvez donc distribuer à l'aide d'un dictionnaire. Par exemple, si foo
et bar
sont des fonctions et dispatcher
est un dictionnaire comme ça.
dispatcher = {'foo': foo, 'bar': bar}
Notez que les valeurs sont foo
et bar
qui sont les objets fonction, et NON foo()
et bar()
.
Pour appeler foo
, vous pouvez simplement faire dispatcher['foo']()
EDIT: Si vous souhaitez exécuter plusieurs fonctions stockées dans une liste, vous pouvez éventuellement faire quelque chose comme ça.
dispatcher = {'foobar': [foo, bar], 'bazcat': [baz, cat]}
def fire_all(func_list):
for f in func_list:
f()
fire_all(dispatcher['foobar'])