Partage
  • Partager sur Facebook
  • Partager sur Twitter

Paramètre d'une fonction qui appelle une fonction

Dur d'expliquer clairement voir exemple !

    13 décembre 2016 à 13:48:15

    Bonjour,

    Pour un projet scolaire j'aimerai optimiser au mieux le code d'un de mes modules, j'aimerai que le paramètre de la première fonction influe sur la prochaine fonction à appeler, je sais que c'est pas clair voici un exemple :

    def find_order(ordre):
    	print("{}()".format(ordre))

    On est d'accord que ça renvoit : " ordre() " (plus haut "ordre" est défini par un input() )
    Sauf que je ne veux pas que ça le print() je souhaiterai que ça effectue la fonction correspondante ! Dans le sens que si ordre = save, je veux que ça appelle save().

    Merci de votre aide !

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      13 décembre 2016 à 14:19:59

      Salut j'ai peut-être pas bien saisi la subtilité de ta demande mais est-ce que ceci pourrait t'aider ?

      def find_order(option):
          dicoFunc[option]() #dictionnaire contenant tes fonctions + parenthèses pour l'appel de cette fonction

      Voili voilou en espérant t'avoir aidé ;)

      • Partager sur Facebook
      • Partager sur Twitter
        13 décembre 2016 à 16:40:56

        Salut,

        Je crois que vous cherchez la fonction getattr.

        À partir d'une string, vous voulez appeler une fonction (qui possède le même nom que la string)

        Si ordre = 'save', vous voulez appelez la fonction save(). GETATTR semble être le bon choix.

        • Partager sur Facebook
        • Partager sur Twitter
          13 décembre 2016 à 17:10:32

          Et je repasse pour dire que j'ai résolu tout ça avec la méthode du dictionnaire ! (bizarre que je n'y ai pas pensé avant ceci dit)

          Pour la fonction getattr je ne la connaissais pas, je vais aller voir ça dans la soirée quand je me replongerai dans mon truc parce qu'il y a bien moyen que ça soit encore plus court que remplir le dict correspondant !

          Je laisse mon code ci dessous au cas où d'autres perdus tomberaient sur ce post du forum :

          dictOrdres={
          	"save":save,
          	"sauvegarde":save,
          	"enregistre":save}
          
          ordre = "save" #ou sauvegarde ou enregistre, chez moi c'est un input()
          
          def find_order(ordre):
          	dictOrdres[ordre]()
          
          def save():
          	print("réussi")

          Merci à vous deux et bonne fin de journée :)

          -
          Edité par Ackermann 13 décembre 2016 à 17:15:53

          • Partager sur Facebook
          • Partager sur Twitter

          Paramètre d'une fonction qui appelle une fonction

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown