Python - Arguments par Défaut
Bonjour à tous, aspirants programmeurs Python !aujourd'hui, nous allons plonger dans le monde fascinant des arguments par défaut en Python. En tant que professeur de sciences informatiques de votre quartier, je suis excité de vous guider à travers ce voyage. Alors, prenez votre boisson préférée, mettez-vous à l'aise, et partons ensemble dans cette aventure Python !
Qu'est-ce qu'Arguments par Défaut ?
Avant de plonger dans les détails, commençons par les bases. Les arguments par défaut sont une fonctionnalité pratique en Python qui permet de définir des paramètres de fonction avec des valeurs prédéfinies. Ces valeurs seront utilisées si vous ne fournissez pas de valeur spécifique lors de l'appel de la fonction.
Pensez aux arguments par défaut comme un filet de sécurité. Ils sont là pour vous attraper si vous oubliez de spécifier une valeur, garantissant que votre fonction peut toujours s'exécuter en douceur. C'est comme avoir un ami qui apporte toujours des collations supplémentaires pour un pique-nique – vous pourriez ne pas toujours en avoir besoin, mais c'est génial d'en avoir au cas où !
Pourquoi Utiliser des Arguments par Défaut ?
- Ils rendent votre code plus flexible.
- Ils réduisent le nombre d'arguments que vous devez fournir.
- Ils aident à maintenir la compatibilité ascendante lors de l'ajout de nouveaux paramètres aux fonctions.
Maintenant, voyons comment cela fonctionne dans la pratique !
Exemple d'Arguments par Défaut
Commençons par un exemple simple. Imaginez que nous créons une fonction pour saluer les gens :
def greet(name, greeting="Bonjour"):
return f"{greeting}, {name} !"
# Utilisation de la fonction
print(greet("Alice"))
print(greet("Bob", "Salut"))
Sortie :
Bonjour, Alice !
Salut, Bob !
Dans cet exemple, greeting
est notre argument par défaut. Si nous ne spécifions pas de salutation, la fonction utilisera "Bonjour" par défaut. Analysons cela :
- Nous avons défini la fonction
greet
avec deux paramètres :name
etgreeting
. -
greeting
a une valeur par défaut de "Bonjour". - Lorsque nous appelons
greet("Alice")
, nous fournissons seulement lename
. La fonction utilise le "Bonjour" par défaut pour la salutation. - Lorsque nous appelons
greet("Bob", "Salut")
, nous fournissons à la foisname
etgreeting
, donc la fonction utilise "Salut" au lieu de la valeur par défaut.
Exemple : Appel de Fonction sans Arguments de Mot-clé
Maintenant, regardons un exemple légèrement plus complexe. Nous allons créer une fonction pour calculer le coût total des articles dans un panier d'achat :
def calculate_total(items, tax_rate=0.08, discount=0):
subtotal = sum(items)
total = subtotal * (1 + tax_rate) - discount
return round(total, 2)
# Utilisation de la fonction
cart1 = [10, 20, 30]
print(calculate_total(cart1))
print(calculate_total(cart1, 0.10))
print(calculate_total(cart1, 0.10, 5))
Sortie :
64.80
66.00
61.00
Analysons cela :
- Notre fonction
calculate_total
a trois paramètres :items
(requis),tax_rate
(par défaut 0.08), etdiscount
(par défaut 0). - Dans le premier appel, nous fournissons seulement
items
. La fonction utilise la taxe par défaut et aucune réduction. - Dans le second appel, nous fournissons
items
et une taxe personnalisée de 0.10. La réduction reste à 0. - Dans le troisième appel, nous fournissons les trois arguments :
items
, taxe et réduction de 5.
N'oubliez pas, lors de l'appel d'une fonction sans arguments de mot-clé, l'ordre compte ! Python affecte des valeurs aux paramètres dans l'ordre dans lequel ils sont fournis.
Objets Mutables comme Arguments par Défaut
Maintenant, voilà où les choses deviennent un peu délicates. Utiliser des objets mutables (comme des listes ou des dictionnaires) comme arguments par défaut peuvent conduire à un comportement inattendu. Voici ce que je veux dire :
def add_item(item, shopping_list=[]):
shopping_list.append(item)
return shopping_list
print(add_item("pomme"))
print(add_item("banane"))
print(add_item("cerise"))
Sortie :
['pomme']
['pomme', 'banane']
['pomme', 'banane', 'cerise']
Surprise ! La liste continue de grandir avec chaque appel. Cela se produit parce que la liste par défaut est créée seulement une fois lorsque la fonction est définie, pas à chaque appel de la fonction.
Pour éviter cela, nous pouvons utiliser None
comme valeur par défaut et créer une nouvelle liste à l'intérieur de la fonction :
def add_item(item, shopping_list=None):
if shopping_list is None:
shopping_list = []
shopping_list.append(item)
return shopping_list
print(add_item("pomme"))
print(add_item("banane"))
print(add_item("cerise"))
Sortie :
['pomme']
['banane']
['cerise']
Beaucoup mieux ! Maintenant, chaque appel crée une nouvelle liste comme prévu.
Résumé des Arguments par Défaut en Python
Résumons ce que nous avons appris dans un tableau pratique :
Concept | Description | Exemple |
---|---|---|
Argument par Défaut de Base | Fournit une valeur par défaut pour un paramètre | def greet(name, greeting="Bonjour"): |
Arguments par Défaut Multiples | Une fonction peut avoir plusieurs arguments par défaut | def calculate_total(items, tax_rate=0.08, discount=0): |
Ordre des Arguments | Les arguments non par défaut doivent venir avant les arguments par défaut dans la définition de la fonction | def func(requis, optionnel=default): |
Arguments par Défaut Mutables | Évitez d'utiliser des objets mutables comme arguments par défaut | Utilisez None comme valeur par défaut et créez l'objet à l'intérieur de la fonction |
Arguments de Mot-clé | Permettent d'appeler des fonctions avec des arguments nommés dans n'importe quel ordre | calculate_total(items=[10, 20], discount=5) |
Et voilà, les amis ! Vous avez juste augmenté vos compétences Python avec les arguments par défaut. N'oubliez pas, comme tout outil puissant, utilisez-les avec sagesse. Ils peuvent rendre votre code plus flexible et plus facile à utiliser, mais soyez prudent avec ces valeurs par défaut mutables !
Continuez à pratiquer, restez curieux, et bon codage ! Avant que vous ne le savez, vous écrirez Python comme un pro. À la prochaine fois, c'est votre professeur de sciences informatiques de quartier qui signe !
Credits: Image by storyset