Dans cet article, nous allons découvrir Python * args et ** kwargs, leurs utilisations et leurs fonctions avec des exemples.
En programmation, nous définissons une fonction pour créer un code réutilisable qui effectue une opération similaire. Pour effectuer cette opération, nous appelons une fonction avec la valeur spécifique, cette valeur est appelée un argument de fonction en Python.
Nous vous recommandons de lire les arguments de la fonction Python et de la fonction Python.
Supposons que nous définissions une fonction pour l'addition de 3 nombres.
Exemple 1: Fonction pour ajouter 3 nombres
def adder(x,y,z): print("sum:",x+y+z) adder(10,12,13)
Lorsque nous exécutons le programme ci-dessus, la sortie sera
somme: 35
Dans le programme ci-dessus, nous avons une adder()
fonction avec trois arguments x, y et z. Lorsque nous passons trois valeurs lors de l'appel de adder()
fonction, nous obtenons la somme des 3 nombres en sortie.
Voyons ce qui se passe lorsque nous passons plus de 3 arguments dans la adder()
fonction.
def adder(x,y,z): print("sum:",x+y+z) adder(5,10,15,20,25)
Lorsque nous exécutons le programme ci-dessus, la sortie sera
TypeError: l'adder () prend 3 arguments de position mais 5 ont été donnés
Dans le programme ci-dessus, nous avons passé 5 arguments à la adder()
fonction au lieu de 3 arguments grâce auxquels nous avons obtenu TypeError
.
Introduction à * args et ** kwargs en Python
En Python, nous pouvons passer un nombre variable d'arguments à une fonction en utilisant des symboles spéciaux. Il y a deux symboles spéciaux:
- * args (Arguments sans mots clés)
- ** kwargs (Arguments de mot-clé)
Nous utilisons * args et ** kwargs comme argument lorsque nous ne sommes pas sûrs du nombre d'arguments à passer dans les fonctions.
Python * args
Comme dans l'exemple ci-dessus, nous ne sommes pas sûrs du nombre d'arguments pouvant être passés à une fonction. Python a * args qui nous permettent de passer le nombre variable d'arguments non mot-clé à function.
Dans la fonction, nous devons utiliser un astérisque *
avant le nom du paramètre pour passer des arguments de longueur variable.Les arguments sont passés sous forme de tuple et ces arguments passés font un tuple à l'intérieur de la fonction avec le même nom que le paramètre sans l'astérisque *
.
Exemple 2: Utilisation de * args pour transmettre les arguments de longueur variable à la fonction
def adder(*num): sum = 0 for n in num: sum = sum + n print("Sum:",sum) adder(3,5) adder(4,5,6,7) adder(1,2,3,5,6)
Lorsque nous exécutons le programme ci-dessus, la sortie sera
Somme: 8 Somme: 22 Somme: 17
Dans le programme ci-dessus, nous avons utilisé * num comme paramètre qui nous permet de transmettre une liste d'arguments de longueur variable à la adder()
fonction. À l'intérieur de la fonction, nous avons une boucle qui ajoute l'argument passé et affiche le résultat. Nous avons passé 3 tuples différents de longueur variable comme argument de la fonction.
Python ** kwargs
Python passe un argument de longueur variable sans mot-clé à la fonction en utilisant * args mais nous ne pouvons pas l'utiliser pour passer un argument de mot-clé. Pour ce problème, Python a une solution appelée ** kwargs, elle nous permet de transmettre la longueur variable des arguments de mot-clé à la fonction.
Dans la fonction, nous utilisons le double astérisque **
avant le nom du paramètre pour désigner ce type d'argument. Les arguments sont passés sous forme de dictionnaire et ces arguments forment un dictionnaire à l'intérieur de la fonction avec le même nom que le paramètre à l'exclusion du double astérisque **
.
Exemple 3: Utilisation de ** kwargs pour transmettre les arguments du mot-clé variable à la fonction
def intro(**data): print("Data type of argument:",type(data)) for key, value in data.items(): print("() is ()".format(key,value)) intro(Firstname="Sita", Lastname="Sharma", Age=22, Phone=1234567890) intro(Firstname="John", Lastname="Wood", Email="[email protected]", Country="Wakanda", Age=25, Phone=9876543210)
Lorsque nous exécutons le programme ci-dessus, la sortie sera
Type de données d'argument: Le prénom est Sita Le nom est Sharma L'âge est 22 Le téléphone est 1234567890 Type de données d'argument: Le prénom est John Le nom est Wood L'e-mail est [email protected] Le pays est Wakanda L'âge est de 25 Le téléphone est 9876543210
Dans le programme ci-dessus, nous avons une fonction intro()
avec ** data comme paramètre. Nous avons passé deux dictionnaires avec une longueur d'argument variable à la intro()
fonction. Nous avons une intro()
fonction de boucle for qui fonctionne sur les données du dictionnaire passé et imprime la valeur du dictionnaire.
Choses dont il faut se rappeler:
- * args et * kwargs sont des mots clés spéciaux qui permettent à la fonction de prendre un argument de longueur variable.
- * args transmet un nombre variable de liste d'arguments non mot-clé et sur quelle opération de la liste peut être effectuée.
- ** kwargs transmet un nombre variable d'arguments de mots clés dictionnaire à la fonction sur laquelle l'opération d'un dictionnaire peut être effectuée.
- * args et ** kwargs rendent la fonction flexible.