Maîtriser les arguments de fonctions Python : Positionnels, nommés et paramètres par défaut
Maîtriser les arguments de fonctions Python
Découvrez comment concevoir des fonctions qui acceptent un nombre variable d'arguments en Python — en utilisant les valeurs par défaut, les mots-clés et les paramètres arbitraires pour un code plus propre et plus adaptable.
Vidéo : Arguments de fonctions Python : Positionnels, mots-clés et défaut
Arguments
Dans le sujet des fonctions définies par l'utilisateur, nous avons couvert la définition et l'invocation des fonctions. Un appel qui ne correspond pas à la signature attendue lève une erreur. Par exemple :
def greet(name, msg):
"""Cette fonction salue la personne avec le message fourni."""
print("Hello", name + ", " + msg)
greet("Monica", "Good morning!")
Sortie
Hello Monica, Good morning!
La fonction greet() accepte deux paramètres. L'appeler avec le bon nombre d'arguments s'exécute sans problème ; sinon, l'interpréteur émet un TypeError avec un message clair.
>>> greet("Monica") # un seul argument
TypeError: greet() missing 1 required positional argument: 'msg'
>>> greet() # aucun argument TypeError: greet() missing 2 required positional arguments: 'name' and 'msg'
Arguments de fonction variables
Python offre des façons flexibles d'accepter un nombre variable d'arguments. Trois motifs courants sont couverts ci-dessous.
Arguments par défaut en Python
Les paramètres peuvent recevoir des valeurs par défaut en utilisant l'opérateur d'affectation (=). L'exemple suivant montre comment un message optionnel prend par défaut « Good morning! » :
def greet(name, msg="Good morning!"):
"""
Cette fonction salue la personne avec le message fourni.
Si le message n'est pas fourni, il prend par défaut "Good morning!".
"""
print("Hello", name + ", " + msg)
greet("Kate")
greet("Bruce", "How do you do?")
Sortie
Hello Kate, Good morning! Hello Bruce, How do you do?
Dans cette définition, name est obligatoire, tandis que msg est optionnel. Quand un argument par défaut est présent, tous les paramètres suivants doivent aussi avoir des défauts ; sinon une SyntaxError se produit.
def greet(msg = "Good morning!", name): pass
SyntaxError: non-default argument follows default argument
Arguments nommés (keyword) en Python
Python permet aux appelants de spécifier les arguments par nom, permettant une flexibilité d'ordre positionnel. La même fonction greet() peut être invoquée comme suit :
# 2 arguments nommés
greet(name = "Bruce", msg = "How do you do?")
# 2 arguments nommés (hors ordre)
greet(msg = "How do you do?", name = "Bruce")
# 1 positionnel, 1 nommé
greet("Bruce", msg = "How do you do?")
Mélanger arguments positionnels et nommés est permis seulement quand tous les arguments positionnels précèdent les nommés ; sinon une SyntaxError résulte.
greet(name="Bruce","How do you do?")
SyntaxError: non-keyword arg after keyword arg
Arguments arbitraires en Python
Quand le nombre d'arguments est inconnu au moment de la conception, utilisez un astérisque (*) pour les capturer comme un tuple :
def greet(*names):
"""Salue chaque nom dans le tuple fourni."""
for name in names:
print("Hello", name)
greet("Monica", "Luke", "Steve", "John")
Sortie
Hello Monica Hello Luke Hello Steve Hello John
À l'intérieur de la fonction, names est un tuple contenant tous les arguments passés, qui peut ensuite être itéré ou traité selon les besoins.
Python
- Maîtriser les types de données Python : Guide pratique
- Maîtriser les opérateurs Python : Guide complet
- Maîtriser l'instruction pass en Python : Guide pratique
- Fonctions lambda en Python : Guide pratique des fonctions anonymes
- Maîtriser les dictionnaires Python : création, manipulation et techniques avancées
- Générateurs Python : itération efficace et cas d'utilisation avancés
- Les fermetures Python expliquées : comment les fonctions imbriquées capturent les variables
- Maîtriser les décorateurs Python : améliorer les fonctions avec des techniques expertes
- Maîtriser la méthode strip() de Python : Guide complet et exemples pratiques