Introduction à args et *kwargs
En Python, *args
et **kwargs
sont des conventions spéciales pour passer un nombre variable d’arguments à une fonction. Le terme *args
est utilisé pour passer un nombre non-spécifié d’arguments positionnels à une fonction, tandis que **kwargs
est utilisé pour passer un nombre non-spécifié d’arguments par mot-clé.
*args
Lorsque nous préfixons un paramètre de fonction avec un astérisque (*
), cela signifie que la fonction peut accepter n’importe quel nombre d’arguments positionnels. Par exemple :
def ma_fonction(*args):
for arg in args:
print(arg)
Dans cet exemple, ma_fonction
peut être appelée avec n’importe quel nombre d’arguments, et elle imprimera chaque argument.
**kwargs
De même, lorsque nous préfixons un paramètre de fonction avec deux astérisques (**
), cela signifie que la fonction peut accepter n’importe quel nombre d’arguments par mot-clé. Par exemple :
def ma_fonction(**kwargs):
for key, value in kwargs.items():
print(f"{key} = {value}")
Dans cet exemple, ma_fonction
peut être appelée avec n’importe quel nombre d’arguments par mot-clé, et elle imprimera chaque paire clé-valeur.
Dans les sections suivantes, nous explorerons plus en détail comment utiliser *args
et **kwargs
dans vos programmes Python.
Passer un nombre variable d’arguments à une fonction
En Python, il est possible de passer un nombre variable d’arguments à une fonction en utilisant les conventions *args
et **kwargs
. Cela peut être particulièrement utile lorsque vous ne savez pas à l’avance combien d’arguments seront passés à votre fonction.
Utilisation de *args
Lorsque vous utilisez *args
dans la définition de votre fonction, vous pouvez passer un nombre quelconque d’arguments positionnels à votre fonction. Voici un exemple :
def somme(*args):
result = 0
for num in args:
result += num
return result
Dans cet exemple, la fonction somme
peut prendre n’importe quel nombre d’arguments et renvoie leur somme. Vous pouvez appeler cette fonction avec n’importe quel nombre d’arguments positionnels, comme ceci : somme(1, 2, 3, 4, 5)
.
Utilisation de **kwargs
De même, lorsque vous utilisez **kwargs
dans la définition de votre fonction, vous pouvez passer un nombre quelconque d’arguments par mot-clé à votre fonction. Voici un exemple :
def afficher_donnees(**kwargs):
for key, value in kwargs.items():
print(f"{key} : {value}")
Dans cet exemple, la fonction afficher_donnees
peut prendre n’importe quel nombre d’arguments par mot-clé. Vous pouvez appeler cette fonction avec n’importe quel nombre d’arguments par mot-clé, comme ceci : afficher_donnees(nom="John", age=25, profession="développeur")
.
Dans les sections suivantes, nous explorerons plus en détail comment utiliser *args
et **kwargs
pour passer un nombre variable d’arguments à une fonction en Python.
Utiliser *args pour passer des arguments positionnels
En Python, *args
est une convention spéciale qui permet à une fonction d’accepter un nombre variable d’arguments positionnels. Le terme args
est une abréviation de « arguments », et l’astérisque (*
) est ce qui permet cette fonctionnalité.
Voici comment cela fonctionne :
def ma_fonction(*args):
for arg in args:
print(arg)
Dans cet exemple, ma_fonction
peut être appelée avec n’importe quel nombre d’arguments, et elle imprimera chaque argument. Par exemple, si vous appelez ma_fonction(1, 2, 3, 4, 5)
, la fonction imprimera :
1
2
3
4
5
C’est parce que *args
recueille tous les arguments positionnels dans un tuple, et le code dans la fonction itère ensuite sur ce tuple.
Il est important de noter que le nom args
n’est pas obligatoire – vous pouvez utiliser n’importe quel nom que vous voulez tant qu’il est précédé d’un astérisque. Par exemple, *parametres
fonctionnerait de la même manière.
Dans la section suivante, nous explorerons comment utiliser **kwargs
pour passer des arguments par mot-clé à une fonction en Python.
Utiliser **kwargs pour passer des arguments par mot-clé
En Python, **kwargs
est une convention spéciale qui permet à une fonction d’accepter un nombre variable d’arguments par mot-clé. Le terme kwargs
est une abréviation de « keyword arguments », et les deux astérisques (**
) sont ce qui permet cette fonctionnalité.
Voici comment cela fonctionne :
def ma_fonction(**kwargs):
for key, value in kwargs.items():
print(f"{key} : {value}")
Dans cet exemple, ma_fonction
peut être appelée avec n’importe quel nombre d’arguments par mot-clé, et elle imprimera chaque paire clé-valeur. Par exemple, si vous appelez ma_fonction(nom="John", age=25)
, la fonction imprimera :
nom : John
age : 25
C’est parce que **kwargs
recueille tous les arguments par mot-clé dans un dictionnaire, et le code dans la fonction itère ensuite sur ce dictionnaire.
Il est important de noter que le nom kwargs
n’est pas obligatoire – vous pouvez utiliser n’importe quel nom que vous voulez tant qu’il est précédé de deux astérisques. Par exemple, **parametres
fonctionnerait de la même manière.
Dans la section suivante, nous explorerons plus en détail comment utiliser *args
et **kwargs
pour passer un nombre variable d’arguments à une fonction en Python.
Exemples pratiques d’utilisation de args et *kwargs
Pour illustrer l’utilisation de *args
et **kwargs
en Python, considérons quelques exemples pratiques.
Exemple d’utilisation de *args
Supposons que nous voulions créer une fonction qui calcule la moyenne de n’importe quel nombre de notes. Nous pourrions utiliser *args
pour cela :
def calculer_moyenne(*notes):
return sum(notes) / len(notes)
Nous pouvons maintenant appeler cette fonction avec n’importe quel nombre de notes, comme ceci : calculer_moyenne(85, 90, 78, 92, 88)
.
Exemple d’utilisation de **kwargs
Supposons maintenant que nous voulions créer une fonction qui affiche les informations d’un étudiant. Nous pourrions utiliser **kwargs
pour cela :
def afficher_informations_etudiant(**informations):
for cle, valeur in informations.items():
print(f"{cle} : {valeur}")
Nous pouvons maintenant appeler cette fonction avec n’importe quel nombre d’informations sur l’étudiant, comme ceci : afficher_informations_etudiant(nom="John", age=20, major="Informatique")
.
Ces exemples montrent comment *args
et **kwargs
peuvent être utilisés pour créer des fonctions flexibles en Python qui peuvent accepter un nombre variable d’arguments. Dans la section suivante, nous explorerons certaines erreurs courantes lors de l’utilisation de *args
et **kwargs
et comment les éviter.
Erreurs courantes et comment les éviter
Lors de l’utilisation de *args
et **kwargs
en Python, il est important de faire attention à certaines erreurs courantes. Voici quelques-unes de ces erreurs et comment les éviter.
Mauvais ordre des arguments
Lors de l’utilisation de *args
et **kwargs
dans une fonction, il est important de respecter l’ordre correct des arguments. En général, l’ordre doit être : arguments obligatoires, *args
, arguments par défaut, **kwargs
. Par exemple :
def ma_fonction(arg1, *args, arg2=default, **kwargs):
# Votre code ici
Si vous ne respectez pas cet ordre, vous obtiendrez une erreur.
Confusion entre args et *kwargs
Il est important de se rappeler que *args
est utilisé pour les arguments positionnels, tandis que **kwargs
est utilisé pour les arguments par mot-clé. Si vous essayez d’utiliser *args
pour les arguments par mot-clé ou **kwargs
pour les arguments positionnels, vous obtiendrez une erreur.
Oublier l’astérisque ou le double astérisque
N’oubliez pas que args
et kwargs
doivent être précédés d’un astérisque (*
) ou d’un double astérisque (**
). Si vous oubliez l’astérisque ou le double astérisque, Python interprétera args
et kwargs
comme des variables normales et vous obtiendrez une erreur.
En gardant ces points à l’esprit, vous pouvez éviter les erreurs courantes lors de l’utilisation de *args
et **kwargs
en Python. Dans la section suivante, nous explorerons plus en détail comment utiliser *args
et **kwargs
pour passer un nombre variable d’arguments à une fonction en Python.