Comment utiliser * args et ** kwargs en Python
Sommaire
- 1- Objectifs
- 2- Présentation
- 3- argument de fonction
- 4- Utilisation de
* args
- 5- Utilisation de
** kwargs
- 6- Comment obtenir chaque argument?
- 7- Comment inclure à la fois d'arguments fixes et d'arguments dynamiques ?
- 8- Exemple
- 9- Applications
- 9.1- App01
- 9.2- Énoncé
- 9.3- Réponse
- 9.4- App02
- 9.5- Énoncé
- 9.6- Réponse
- 9.6.1- Sommaire du cours Python
Comment utiliser * args et ** kwargs en Python
-
Objectifs
- Dans cet article, nous allons découvrir les instructions * args et ** kwargs, leurs utilisations et leurs fonctions avec des exemples, Comment utiliser * args et ** kwargs en Python.
-
Présentation
- Dans les définitions de fonction , les paramètres sont des entités nommées qui spécifient un argument qu’une fonction donnée peut accepter.
- Nous pouvons passer un nombre variable d’arguments à une fonction en utilisant
* args
et** kwargs
dans notre code. * args
et** kwargs
sont principalement utilisés dans les définitions de fonctions.* args
et** kwargs
vous permettent de passer un nombre non spécifié d’arguments à une fonction, donc lors de l’écriture de la définition de fonction, vous n’avez pas besoin de savoir combien d’arguments seront passés à votre fonction.- La syntaxe spéciale
* args
dans les définitions de fonction en python est utilisée pour passer un nombre variable d’arguments à une fonction. Il est utilisé pour transmettre une liste d’arguments de longueur variable sans mots clés. -
argument de fonction
- 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.
- 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 vous recommandons de lire la fonction en Python.
-
Utilisation de
* args
- En Python, la forme à astérisque unique
* args
peut être utilisée comme paramètre pour envoyer une liste d’arguments de longueur variable sans mot clé à des fonctions. args
est une forme courte d’arguments. Avec l’utilisation de*args
, prend n’importe quel nombre d’arguments dans la fonction définie par l’utilisateur et convertit les entrées de l’utilisateur en un tuple nomméargs
. En d’autres termes,*args
signifie zéro ou plusieurs arguments qui sont stockés dans un tuple nomméargs
.- Il convient de noter que l’astérisque (
*
) est l’élément important ici, comme le motargs
est l’idiome conventionnel établi, bien qu’il ne soit pas imposé par la langue. - 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. - Exemple:
- Lorsque nous appelons la fonction, nous devons utiliser des nombres pour correspondre avec a et b.
- Si, plus tard, nous décidions que nous aimerions multiplier trois nombres plutôt que deux. Si nous essayons d’ajouter un numéro supplémentaire à la fonction, comme indiqué ci-dessous, nous recevrons une erreur.
TypeError: multiply() takes 2 positional arguments but 3 were given
- Pour résoudre ce problème on doit utiliser
* args
- On doit créer la même fonction et le même code que ceux que nous avons montrés dans le premier exemple, en supprimant a et b en tant que paramètres de fonction, et en les remplaçant à la place par
*args
: -
Utilisation de
** kwargs
** kwargs
vous permet de passer des arguments de longueur variable mot – clé à une fonction.- Vous devez utiliser
** kwargs
si vous souhaitez gérer des arguments nommés dans une fonction. - Utiliser
** kwargs
est presque identique à l’utilisation de* args
mais dans** kwargs
, vous pouvez passer des arguments de mot-clé. -
Comment obtenir chaque argument?
- Vous pouvez extraire des arguments basés sur l’index comme nous obtenons une valeur du tuple basée sur la position d’index se
args[0]
réfère au premier argument car l’indexation en python -
Comment inclure à la fois d’arguments fixes et d’arguments dynamiques ?
- Python vous permet d’inclure à la fois un argument fixe et un nombre dynamique d’arguments en utilisant
* args
. - Il est important de noter qu’il est nécessaire d’inclure un argument fixe. Cependant, vous pouvez ignorer le passage d’arguments dynamiques et cela ne retournera pas d’erreur.
-
Exemple
- Dans ce qui suit, nous créons une fonction simple qui ajoute toutes les composantes d’une note. cette note comprend une note de base, que tous les élèves doivent l’avoir. D’autres notes d’encouragement données aux élèves brillants.
-
Applications
-
App01
-
Énoncé
- Écrire une fonction « somme » avec un argument « tuple » de longueur variable qui calcule la somme des nombres contenus dans le tuple.
- Tester cette fonction par des appels avec différents tuples d’entiers ou de flottants.
-
Réponse
-
App02
-
Énoncé
- Écrire une fonction « unDictionnaire » avec un argument « dictionnaire de longueur variable », et qui affiche son argument.
- Dans le programme principal, définir un dictionnaire, puis utilisez la syntaxe d’appel à la fonction qui décompresse le dictionnaire. Affichez le résultat.
-
Réponse
La syntaxe consiste à utiliser le symbole
*
pour prendre un nombre variable d’arguments; par convention, il est souvent utilisé avec le mot args.
def multiplier(a, b):
print (a * b)
Pour appeler la fonction nous devons écrire:multiplier(6,9)
def multiplier(*args):
somme = 1
for num in args:
somme *= num
print(somme)
multiplier(4, 5)
multiplier(10, 9)
multiplier(2, 3, 4)
multiplier(3, 5, 10, 6)
###Production###
20
90
24
900
Il n’est pas obligatoire d’utiliser uniquement le mot-clé nommé args. Vous pouvez utiliser n’importe quelle convention de dénomination autre que args.
def ma_fonction (** kwargs):
def ma_fonction (** kwargs):
for clé, valeur in kwargs.items ():
print ("% s == % s"% (clé, valeur))
ma_fonction (premier = 'Table')
print(40*'-')
ma_fonction (premier = 'Table', deuxième = 'Chaîse')
print(40*'-')
ma_fonction (premier = 'Table', deuxième = 'Chaîse', troisième = 'Tableau')
###Production###
premier == Table
----------------------------------------
premier == Table
deuxième == Chaîse
----------------------------------------
premier == Table
deuxième == Chaîse
troisième == Tableau
def ajouter (* args):
print (args [0])
print (args [1])
print (args [2])
ajouter ('Mohamed','Tahar','Eline')
###Production###
Mohamed
Tahar
Eline
def note(noteBase, * args):
return noteBase + sum(args)
print(note(14, 3, 1))
print(note(15))
print(note(15, 1.5))
print(note(15, 2, 1, 0.5))
#print(note()) # Ne fonctionne pas, doit inclure l' argument de
# fonction
def somme(*args):
resultat = 0
for nombre in args:
resultat += nombre
return resultat
# programme principal -----------------------------------------------
print("-"*40)
print(somme(23))
print("\n", "-"*40)
print(somme(-10, 13))
print("\n", "-"*40)
print(somme(23, 42, 13))
print("\n", "-"*40)
print(somme(-10.0, 12.7, 11.2))
# fonction
def unDictionnaire(**kargs):
return kargs
# programme principal -----------------------------------------------
print(" appel avec des parametres nommes ".center(60, '-'))
print(unDictionnaire(a=23, b=42))
print(" appel avec un dictionnaire decompresse ".center(60, '-'))
mots = {'d':85, 'e':14, 'f':9}
print(unDictionnaire(**mots))