Partage
  • Partager sur Facebook
  • Partager sur Twitter

continuer une fonction après un return

Sujet résolu
    4 octobre 2023 à 17:07:54

    Bonjour,

    Je voudrais savoir s'il est possible en python de continuer à exécuter une fonction après une indication return. Exemple :

    def fonc(a, b, c):
        global c
        a += 2
        b -=1
        return a+b
        c += 4
    
    c = 2
    test = fonc(5, 16, c)
    print(test)

     Ici j'aimerai que après avoir return a+b, la fonction continue...

    Merci d'avance !!



    • Partager sur Facebook
    • Partager sur Twitter
      4 octobre 2023 à 18:15:28

      réponse courte: non

      pourquoi vouloir/pouvoir exécuter du code dans une fonction alors qu'on en est sorti ?

      c'est quoi le but ? pourquoi ne pas mettre ta ligne de code avant le return dans ton exemple ? 

      • Partager sur Facebook
      • Partager sur Twitter
        4 octobre 2023 à 18:59:55

        Re bonjour,

        Le problème c'est que ce n’était pas un bon exemple. Dans mon cas, la fonction renvoie une valeur puis continue de tourner pour finir sur l'appel d'une autre fonction en elle.

        def a():
            print("a")
        
        def b(param):
            param += 2
            return param
            a()
        
        fonc = b(12)
        print(fonc)

        Ceci est un meilleur exemple

        Le rendu idéal serait :

        >>>14
        >>>a

        Mais ça ne marche pas car la fonction s’arrête au return.

        • Partager sur Facebook
        • Partager sur Twitter
          4 octobre 2023 à 22:28:47

          Retourner, ca veut dire que la fonction appelée termine son exécution,  et que la fonction appelante reprend là ou elle en était arrêtée.

          Alors, la fonction b n'exécutera pas l'instruction a()

          Si tu veux que l'affichage de "a" se produise après l'affichage de fonc, appelle-le après. Pas dans b.

          -
          Edité par michelbillaud 4 octobre 2023 à 22:32:45

          • Partager sur Facebook
          • Partager sur Twitter
            5 octobre 2023 à 4:25:29

            Bien que je trouverais cela un peu idiot, on remplace le return par un yield et on affiche dans une boucle:

            for fonc in b(12):

                print(fonc)

            • Partager sur Facebook
            • Partager sur Twitter

            Le Tout est souvent plus grand que la somme de ses parties.

              5 octobre 2023 à 8:42:47

              On peut faire des trucs avec les générateurs mais

              • Ça ne répond pas à la demande (faire un truc après return)
              • Demande qui ne correspond pas à un besoin réel
              • Et ca serait un emploi atypique des générateurs, qui sont là pour fournir une séquence de valeurs

              Donc y a un problème XY derrière, et retour à la question "C'est quoi le but". La reponse n'est pas un exemple tordu qui sert à rien, où on aimerait que les instructions fassent autre chose que ce qu'elles doivent faire par définition. Return, ça retourne.

              -
              Edité par michelbillaud 5 octobre 2023 à 8:50:59

              • Partager sur Facebook
              • Partager sur Twitter
                5 octobre 2023 à 13:38:21

                Bonjour,

                J'abandonne et je vais me diriger vers une autre méthode... Merci tout de même.

                • Partager sur Facebook
                • Partager sur Twitter
                  5 octobre 2023 à 14:33:09

                   ...

                  -
                  Edité par umfred 5 octobre 2023 à 14:33:58

                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 octobre 2023 à 16:38:08

                    Molinus a écrit:

                    Bonjour,

                    J'abandonne et je vais me diriger vers une autre méthode... Merci tout de même.


                    Ca serait intéressant de savoir quel est le problème à résoudre, avant de chercher un moyen technique d'y arriver
                    • Partager sur Facebook
                    • Partager sur Twitter

                    continuer une fonction après un return

                    × 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