En programmation, nous avons souvent besoin d'organiser et de gérer des fonctions pour une exécution efficace. Une approche courante consiste à stocker les fonctions dans des structures de données telles que des listes et des dictionnaires, ce qui nous permet de les référencer et de les invoquer de manière dynamique. Cependant, la question se pose : comment pouvons-nous stocker et récupérer efficacement des fonctions dans ces structures ?
Par exemple, considérons l'approche suivante :
<code class="python">mydict = { 'funcList1': [foo(), bar(), goo()], 'funcList2': [foo(), goo(), bar()]}</code>
Cette approche tente de stocker les résultats de la fonction appels (c'est-à-dire valeurs de retour) dans un dictionnaire, mais cela ne fonctionnera pas comme prévu. Au lieu de cela, nous avons besoin d'un moyen de stocker les objets fonction eux-mêmes.
En Python, les fonctions sont des objets de première classe, ce qui signifie qu'elles peuvent être traitées comme des valeurs et stockées dans des structures de données. Pour stocker efficacement les fonctions dans un dictionnaire, nous devons attribuer les objets fonction aux clés, et non à leurs valeurs de retour. Par exemple :
<code class="python">dispatcher = {'foo': foo, 'bar': bar}</code>
où foo et bar sont des objets fonction.
Pour invoquer une fonction de ce dictionnaire, on l'appelle simplement en utilisant sa clé :
<code class="python">dispatcher['foo']() # calls the foo function</code>
Si nous devons exécuter plusieurs fonctions stockées dans une liste, nous pouvons utiliser une fonction d'assistance pour parcourir la liste et appeler chaque fonction :
<code class="python">dispatcher = {'foobar': [foo, bar], 'bazcat': [baz, cat]} def fire_all(func_list): for f in func_list: f() fire_all(dispatcher['foobar'])</code>
Cette approche nous permet d'organiser et d'invoquer des fonctions de manière dynamique, ce qui facilite organisation du code et réduction du nombre d'instructions def nécessaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!