Modification des Fonctions
En programmation, les fonctions sont des outils dynamiques capables de s'adapter à différentes situations et besoins. Elles ne sont pas simplement des blocs de code fixes. Il est possible d'améliorer les fonctions afin de les rendre plus polyvalentes et conviviales dans divers contextes.
Dans ce chapitre, nous allons explorer quelques techniques importantes pour modifier les fonctions, telles que l'utilisation d'arguments par défaut et d'arguments nommés.
Commençons par un exemple simple de modification de fonctions pour accroître leur utilité dans notre système de gestion de magasin d'alimentation :
Arguments par défaut
Les arguments par défaut sont une fonctionnalité utile de Python qui permet de spécifier des valeurs par défaut pour les paramètres d'une fonction.
Dans la fonction apply_discount()
, le paramètre discount
est défini à 0.10
par défaut. Cela signifie que la fonction appliquera automatiquement une remise de 10 % sauf indication contraire. Comme illustré avec la variable default_discount_price
, il est possible d'appeler la fonction uniquement avec le paramètre price
.
Cependant, si nécessaire, il est possible de remplacer la valeur par défaut en passant à la fois le price
et le discount
personnalisé (par exemple, 0.20
pour 20 %) comme démontré avec la variable custom_discount_price
.
# Define a function with a default `discount` argument def apply_discount(price, discount=0.10): discounted_price = price * (1 - discount) return discounted_price # Call the function without providing a `discount`, using the default value default_discount_price = apply_discount(100) print(f"Price after applying the default discount: ${default_discount_price}") # Call the function with a custom `discount` value custom_discount_price = apply_discount(100, 0.20) print(f"Price after applying a custom discount: ${custom_discount_price}")
Arguments nommés
Les arguments nommés en Python permettent de passer des arguments en nommant explicitement chaque paramètre, rendant ainsi vos appels de fonctions plus lisibles et flexibles. Cela est particulièrement utile lorsqu'une fonction possède plusieurs paramètres ou lorsque l'ordre des arguments peut prêter à confusion.
Dans l'exemple suivant, price
et discount
sont spécifiés, tandis que le paramètre tax
conserve sa valeur par défaut, offrant ainsi de la flexibilité sans compromettre la clarté.
# Function where `tax` has a default value def calculate_total(price, discount, tax=0.05): total = price * (1 + tax) * (1 - discount) return total # Calling the function using keyword arguments total_cost = calculate_total(price=100, discount=0.15) print(f"Total cost after applying discount: ${total_cost}")
Remarque
L'ordre des paramètres n'a pas d'importance lorsqu'ils sont passés en utilisant des arguments nommés.
Swipe to start coding
Créer des fonctions pour calculer le coût total d'un produit en appliquant une remise et une taxe, en utilisant des arguments nommés et des valeurs par défaut pour plus de flexibilité.
- Définir
apply_discount(price, discount=0.05)
→ Retourne le prix après application de la remise. - Définir
apply_tax(price, tax=0.07)
→ Retourne le prix après ajout de la taxe. - Définir
calculate_total(price, discount=0.05, tax=0.07)
→ Utiliseapply_discount()
etapply_tax()
pour retourner le prix total avec remise et taxe appliquées. - Appeler
calculate_total(120)
en utilisant la remise et la taxe par défaut. - Appeler
calculate_total(100, discount=0.10, tax=0.08)
en utilisant des valeurs personnalisées via des arguments nommés.
Exigences de sortie
- Afficher le résultat avec les valeurs par défaut :
Coût total avec remise et taxe par défaut : $<total_price_default>
- Afficher le résultat avec des valeurs personnalisées :
Coût total avec remise et taxe personnalisées : $<total_price_custom>
Remarque
Lors de la définition des fonctions, placer d'abord les paramètres obligatoires, suivis des paramètres avec des valeurs par défaut.
Lors de l'appel de fonctions avec des arguments nommés, les arguments positionnels doivent précéder les arguments nommés.
Solution
Merci pour vos commentaires !