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 !

Python - Default Arguments

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 ?

  1. Ils rendent votre code plus flexible.
  2. Ils réduisent le nombre d'arguments que vous devez fournir.
  3. 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 :

  1. Nous avons défini la fonction greet avec deux paramètres : name et greeting.
  2. greeting a une valeur par défaut de "Bonjour".
  3. Lorsque nous appelons greet("Alice"), nous fournissons seulement le name. La fonction utilise le "Bonjour" par défaut pour la salutation.
  4. Lorsque nous appelons greet("Bob", "Salut"), nous fournissons à la fois name et greeting, 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 :

  1. Notre fonction calculate_total a trois paramètres : items (requis), tax_rate (par défaut 0.08), et discount (par défaut 0).
  2. Dans le premier appel, nous fournissons seulement items. La fonction utilise la taxe par défaut et aucune réduction.
  3. Dans le second appel, nous fournissons items et une taxe personnalisée de 0.10. La réduction reste à 0.
  4. 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