
Arguments positionnels et arguments nommés (keyword arguments)
Apprenez la différence entre les arguments positionnels et nommés (keyword arguments) en Python. Maîtrisez les différentes façons de passer des arguments à une fonction pour plus de flexibilité et de lisibilité.
Arguments positionnels : l'ordre compte
Les arguments positionnels sont les arguments les plus courants en Python. Ils sont passés à une fonction dans l'ordre où les paramètres sont définis dans la définition de la fonction.
Exemple :
def afficher_informations(nom, age, ville):
print("Nom :", nom)
print("Age :", age)
print("Ville :", ville)
# Appel avec des arguments positionnels
afficher_informations("Dupont", 30, "Paris")Dans cet exemple, l'ordre des arguments lors de l'appel de la fonction est important. Le premier argument (`"Dupont"`) est affecté au premier paramètre (`nom`), le deuxième argument (`30`) au deuxième paramètre (`age`), et le troisième argument (`"Paris"`) au troisième paramètre (`ville`).
Si vous inversez l'ordre des arguments, le résultat sera différent (et potentiellement incorrect) :
afficher_informations("Paris", "Dupont", 30) # Ordre incorrectAvec les arguments positionnels, vous devez fournir une valeur pour chaque paramètre de la fonction (sauf si le paramètre a une valeur par défaut, voir section suivante).
Arguments nommés (keyword arguments) : plus de flexibilité et de clarté
Les arguments nommés (ou keyword arguments) permettent de passer des arguments à une fonction en spécifiant explicitement le nom du paramètre auquel chaque argument est destiné. Cela offre plus de flexibilité et de clarté, car l'ordre des arguments n'a plus d'importance.
Syntaxe :
nom_de_la_fonction(parametre1=valeur1, parametre2=valeur2, parametre3=valeur3)Exemple (en reprenant la fonction `afficher_informations` précédente) :
afficher_informations(age=30, nom="Dupont", ville="Paris") # Ordre différent, mais correctDans cet exemple, l'ordre des arguments n'est pas le même que dans la définition de la fonction, mais comme les arguments sont nommés, Python sait à quel paramètre affecter chaque valeur.
Les arguments nommés sont particulièrement utiles lorsque vous avez des fonctions avec de nombreux paramètres, ou lorsque vous voulez rendre l'appel de fonction plus explicite.
Vous pouvez mélanger les arguments positionnels et nommés, mais tous les arguments positionnels doivent être placés avant les arguments nommés :
afficher_informations("Dupont", ville="Paris", age=30) # Correct
# afficher_informations(nom="Dupont", 30, "Paris") # Incorrect : argument positionnel après un argument nomméAvantages des arguments nommés
Les arguments nommés offrent plusieurs avantages :
- Lisibilité améliorée : Ils rendent l'appel de fonction plus explicite, car on voit clairement quelle valeur est associée à quel paramètre.
- Flexibilité : L'ordre des arguments n'a plus d'importance.
- Maintenance facilitée : Si vous ajoutez ou supprimez des paramètres dans la définition de la fonction, vous n'avez pas besoin de modifier tous les appels de fonction qui utilisent des arguments nommés (tant que les noms des paramètres utilisés dans les appels restent les mêmes).
- Valeurs par défaut : Les arguments nommés sont souvent utilisés en conjonction avec les valeurs par défaut des paramètres (voir section suivante).
Cependant ils peuvent rendre l'appel de fonction légèrement plus verbeux.
Quand utiliser des arguments positionnels ou nommés ?
Voici quelques recommandations pour choisir entre arguments positionnels et nommés :
- Arguments positionnels : Utilisez-les pour les fonctions avec peu de paramètres, lorsque l'ordre des paramètres est évident et intuitif.
- Arguments nommés : Utilisez-les pour les fonctions avec de nombreux paramètres, lorsque l'ordre des paramètres n'est pas évident, ou lorsque vous voulez rendre l'appel de fonction plus explicite.
- Mélange : Vous pouvez mélanger les deux types d'arguments, en plaçant toujours les arguments positionnels avant les arguments nommés.
En fin de compte, le choix dépend du contexte et de vos préférences, mais l'objectif principal doit toujours être la clarté et la lisibilité du code.