arguments *args et **kwargs dans les fonctions

arguments *args et **kwargs dans les fonctions

*args

l'argument spécial *args dans la définition d'une fonction en python permet de transmettre un nombre variable d'arguments à une fonction. Il est utilisé pour transmettre une liste d'arguments de longueur variable sans mot-clé.

  • La syntaxe consiste à utiliser le symbole * pour prendre un nombre variable d'arguments; par convention, il est souvent utilisé avec le mot args.
  • Ce que *args vous permet de faire, c'est de prendre plus d'arguments que le nombre d'arguments formels que vous avez précédemment définis. Avec *args, n'importe quel nombre d'arguments supplémentaires peut être ajouté à vos paramètres formels actuels (y compris zéro argument supplémentaire).
    Par exemple: nous voulons créer une fonction de multiplication prenant un nombre quelconque d’arguments et capable de les multiplier tous ensemble. Cela peut être fait en utilisant *args.
  • En utilisant *, la variable que nous associons à devient un mot éditable, ce qui signifie que vous pouvez effectuer des opérations comme itérer dessus, exécuter des fonctions d'ordre plus élevé telles que map et filter, etc.
    def TEST(*args):
        for elm in args:
            print(elm)
    
    TEST(2,'Mostafa','Meknes',12.3,[1,3])
    2
    Mostafa
    Meknes
    12.3
    [1,3]
        def Info(nom,*args):
            print("votre nom est ",nom)
            print('Votre prénom est ',args[0])
            print('Ville ',args[1])
            print('Age',args[2])
            print("Année d'inscription ",args[3])
        
        Info('ESSADDOUKI','Mostafa','Meknes',31,2019)
    votre nom est  ESSADDOUKI
    Votre prénom est  Mostafa
    Ville  Meknes
    Age  31
    Année d'inscription  2019

**kwargs

l'argument spécial **kwargs dans les définitions de fonctions en python permet de transmettre une liste d'arguments de longueur variable avec mots-clés.

  • lorsque vous passez un argument portant un nom à la fonction, nous l'appelons un mot clé.
  • On peut penser que le kwargs est un dictionnaire qui associe chaque mot clé à la valeur que nous lui transmettons. C’est pourquoi, lorsque nous parcourons les kwargs, il ne semble pas y avoir d’ordre dans lequel ils ont été ajoutés.
    def Info(**kwargs):
        print("votre nom est ",kwargs['nom'])
        print('Votre prénom est ',kwargs['prenom'])
        print('Ville ',kwargs['ville'])
        print('Age',kwargs['age'])
        print("Année d'inscription ",kwargs['annee'])
            
    Info(nom='ESSADDOUKI',prenom='Mostafa',ville='Meknes',age=31,annee=2019)
    votre nom est  ESSADDOUKI
    Votre prénom est  Mostafa
    Ville  Meknes
    Age  31
    Année d'inscription  2019

Exemple avec *args et **kwargs

    def Info(*args, **kwargs):
        print("votre nom est ",args[0])
        print('Votre prénom est ',args[1])
        print('Ville ',kwargs['ville'])
        print('Age',kwargs['age'])
        print("Année d'inscription ",kwargs['annee'])
        
    Info('ESSADDOUKI','Mostafa',ville='Meknes',age=31,annee=2019)

Rédigé par M. ESSADDOUKI

Many people realize their hearts desires late in life. Continue learning, never stop striving and keep your curiosity sharp, and you will never become too old to appreciate life.