Partage
  • Partager sur Facebook
  • Partager sur Twitter

paramètres de fonction dans n'importe quel ordre

Sujet résolu
    15 novembre 2017 à 16:06:53

    Bonjour,

    Je suis actuellement le cour sur les paramètres nommés de fonction, et voilà la phrase du cour :

    "Ainsi, pour avoir une fonction qui accepte n'importe quel type de paramètres, nommés ou non, dans n'importe quel ordre, dans n'importe quelle quantité, il faut la déclarer de cette manière :"

    C'est moi où c'est complètement faux ?

    Je vous explique, voilà la fonction que j'ai fait :

    def fonction_inconnue(*en_liste, **en_dictionnaire):
    
    print("J'ai reçu {} {}".format(en_liste, en_dictionnaire)

    Je peux afficher la liste , mais une fois que j'ai affiché un élément nommés je ne peux plus rien mettre après alors que dans le cour il est bien dit que je peux le faire dans n'importe quel ordre :

    fonction_inconnue(33)
    
    J'ai reçu (33,) {}
    
    fonction_inconnue(33, 22)
    
    J'ai reçu (33, 22) {}
    
    fonction_inconnue(33, 22, bonjour = 33)
    
    J'ai reçu (33, 22) {'bonjour' : 33}
    
    fonction_inconnue(33, 22, bonjour = 33, 44)
    
    syntaxError : positional argument follows keyword argument
    
    

    ça me met ça à chaque fois que je mets un paramètre non nommés après un paramètre nommés, par exemple si je fais ça 

    fonction_inconnue(bonjour = 33, 22)

    ça me lève une exception aussi, alors que dans le cour il est écrit "dans n'importe quel ordre" la phrase du cour est t'elle fausse, où alors j'ai sauté quelque chose ???



    • Partager sur Facebook
    • Partager sur Twitter
      15 novembre 2017 à 16:20:04

      Bonjour,

      Oui, tu dois mettre les paramètres non nommés avant les paramètres nommés sinon ça ne fonctionne pas

      https://docs.python.org/3/glossary.html#term-argument

      @+

      -
      Edité par Tuxdis 15 novembre 2017 à 16:22:36

      • Partager sur Facebook
      • Partager sur Twitter
        15 novembre 2017 à 16:21:42

        Tuxdis a écrit:

        Bonjour,

        Oui, tu dois mettre les paramètres non nommés avant les paramètres nommés sinon ça ne fonctionne pas

        https://docs.python.org/3/glossary.html

        Regarde la partie "argument"

        @+


        Donc la phrase du cour est tout simplement fausse, il faut peut être le faire remarquer ?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          15 novembre 2017 à 16:23:27

          Effectivement tu ne peux pas passer un argument positionnel (non-nommé) après un argument nommé, en revanche tu peux nommer les arguments positionnels (sauf avec les arguments paqués) pour les placer où tu veux.

          • Partager sur Facebook
          • Partager sur Twitter
            17 novembre 2017 à 9:15:14

            BastienPortigo a écrit: > il faut peut être le faire remarquer ?

            Sûrement déjà fait il y a des lustres, mais ça n'a aucun impact.

            • Partager sur Facebook
            • Partager sur Twitter
              21 novembre 2017 à 15:07:47

              entwanne a écrit:

              BastienPortigo a écrit: > il faut peut être le faire remarquer ?

              Sûrement déjà fait il y a des lustres, mais ça n'a aucun impact.


              Ah... Juste honteux, bon bah pas grave il faut faire avec
              • Partager sur Facebook
              • Partager sur Twitter

              paramètres de fonction dans n'importe quel ordre

              × 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