[python] appel d'une fonction

Fermé
AnneG35 - 20 mars 2009 à 15:08
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 20 mars 2009 à 15:37
Bonjour,

Je débute en python et je ne maîtrise pas tout à fait l'appel des fonctions. En fait, j'ai le problème suivant. J'ai plusieurs modules qui contiennent chacun plusieurs fonctions, ces modules sont amenés à être complétés au cours du temps. Dans mon programme principal, un dictionnaire est construit, contenant le nom de toutes les fonctions disponibles.
dico['fonction1'] = 'monModule.maFonction1'
dico['fonction2'] = 'monModule.maFonction2'
...
Je reçois des paramètres dans mon programme principal qui me permettent de reconstituer une chaîne de caractères correspondant à la clé du dictionnaire. Je dois ensuite appeler cette fonction.
Seulement, quand je fais result = dico.get(fonction1)(), cela produit une erreur.

Y a-t-il un moyen d'appeler une fonction python en passant son nom et de récupérer le résultat de cette fonction ?

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
20 mars 2009 à 15:37
Salut,
Le mieux serait de ne pas stocker monModule.maFonction1 sous forme de chaîne mais de stocker l'adresse de la fonction (sans apostrophes).
dico['fonction1'] = monModule.maFonction1
Pour l'appeler, un simple : dico['fonction1']() fera l'affaire.

Sinon, si tu dois vraiment stocker sous forme de chaîne. Pour l'appeler, tu peux utiliser exec.
exec(dico['fonction1']+'()')

Cdlt
1