def test():
print 'test'
def test2():
print 'test2'
test = {'test':'blabla','test2':'blabla2'}
for key, val in test.items():
key() # Here i want to call the function with the key name, how can i do so?
Répondre
Vous pouvez utiliser les objets de fonction eux-mêmes comme des clés plutôt que comme les noms des fonctions. Les fonctions sont des objets de première classe en Python, il est donc plus propre et plus élégant de les utiliser directement plutôt que leurs noms.
test = {test:'blabla', test2:'blabla2'}
for key, val in test.items():
key()
John a une bonne solution. Voici une autre façon, en utilisant eval()
:
def test():
print 'test'
def test2():
print 'test2'
mydict = {'test':'blabla','test2':'blabla2'}
for key, val in mydict.items():
eval(key+'()')
Notez que j'ai changé le nom du dictionnaire pour éviter un affrontement avec le nom de la fonction test()
.
Oof, je ne sais pas pourquoi vous utiliseriez cela plus de la méthode "objets de fonction en tant que clés elles-mêmes". Si quelque chose, vous pouvez être introspection en utilisant quelque chose comme 'hasattr', mais jamais" eval " –
@Daniel Je n'ai pas dit que c'était joli! : D – chrisaycock
Cela fonctionne, mais 'eval()' a beaucoup de surcharge pour l'utiliser en appelant simplement une fonction. Il y a d'autres façons, bien plus "pythoniques" ... – martineau
Si ce que vous voulez savoir est « Comment appeler une fonction lorsque vous avez son nom dans une chaîne », voici quelques bonnes réponses - Calling a function of a module from a string with the function's name in Python
+1 pour rechercher si cette question a déjà répondu ici (quelque chose que l'OP aurait dû faire, à mon humble avis). – martineau
test def(): print « test »
def test2(): print 'test2'
assign_list = [test, test2]
pour i dans assign_list: i()
- 1. Portée variable: appel de fonction inter-classe
- 2. Fonction d'auto-appel avec fermeture setTimeout, accès variable
- 3. Imprimer des appels de fonction avec un délai variable/Python
- 4. Appel d'une fonction Python en C++ avec Swig
- 5. appel de fonction en boucle avec validation
- 6. Appel d'une fonction avec un nombre variable d'arguments avec un tableau en C++ (comme l'opérateur * de python)
- 7. Python Global Variable: partage entre classe de fonction puis fonction
- 8. Appeler une variable d'une autre fonction Python
- 9. Appel de fonction jquery ASP.NET
- 10. PHP Appel d'une fonction
- 11. Appel de fonction événement jquery avec oop?
- 12. appel() de la fonction avec des arguments
- 13. appel de fonction jquery avec des paramètres
- 14. Passer plusieurs valeurs à un appel de fonction (Python)
- 15. Ajouter un à un appel de fonction en python
- 16. appel fonction à chaque fois ou créer une variable locale
- 17. Appel d'une fonction JavaScript nommée dans une variable
- 18. VBA - Appel d'une fonction qui accepte l'objet parent comme variable
- 19. Parse Variable JavaScript avec Python
- 20. Appel de la fonction jQuery avec la fonction Javascript
- 21. Appel d'une fonction membre avec un pointeur de fonction nue
- 22. Appel de procédures Tcl avec des pointeurs de fonction en tant qu'argument à partir de Python
- 23. Python, appel dynamique du script
- 24. Ajax appel de fonction
- 25. Appel de fonction minuté
- 26. Appel de fonction d'imbrication
- 27. Appel de la méthode générique avec la variable de type
- 28. python équivalent de « #define func() » ou comment commenter un appel de fonction en python
- 29. Appel d'un service REST avec Python
- 30. appel de fonction dans la clause where
Oh année .. je vois ,, :), juste un code de test rapide;) – pkdkk
duplication possible de [Appel d'une fonction d'un module d'une chaîne avec le nom de la fonction en Python] (http://stackoverflow.com/ questions/3061/call-a-function-of-a-module-from-a-string-with-the-functions-name-in-python) – cfi