Combinaison d'Arguments Arbitraires Positionnels et Nommés
Considérez une fonction qui calcule le coût total de plusieurs articles tout en vous permettant de passer un nombre quelconque de prix et des paramètres optionnels tels que des remises ou des taxes.
12345678910111213141516171819202122232425def calculate_total_cost(*prices, **settings): subtotal = sum(prices) discount = settings.get("discount", 0) tax = settings.get("tax", 0) discount_amount = subtotal * (discount / 100) taxed_amount = (subtotal - discount_amount) * (1 + tax / 100) print(f"Subtotal: ${subtotal:.2f}") if discount > 0: print(f"Discount: {discount}% (-${discount_amount:.2f})") else: print("No discount applied.") if tax > 0: print(f"Tax: {tax}% (+${taxed_amount - (subtotal - discount_amount):.2f})") print(f"Final total: ${taxed_amount:.2f}") print() # Examples of using the function calculate_total_cost(1000, 250, 50) calculate_total_cost(1200, 800, discount=10) calculate_total_cost(500, 750, 250, discount=5, tax=8)
Règles pour combiner des arguments arbitraires
Arguments positionnels arbitraires (*args)
*args collecte tous les arguments positionnels supplémentaires dans un tuple.
Dans cet exemple, la fonction peut accepter un nombre quelconque de prix d'articles sans avoir à les définir explicitement.
Par exemple :
calculate_total_cost(500, 250, 100)
Ici, *prices devient (500, 250, 100).
Arguments arbitraires nommés (**kwargs)
**kwargs collecte tous les arguments nommés (par mot-clé) dans un dictionnaire.
Cela permet à la fonction d'accepter des paramètres nommés supplémentaires comme discount ou tax, même s'ils n'ont pas été prédéfinis.
Par exemple :
calculate_total_cost(1000, 500, discount=10, tax=5)
Ici, **settings devient {'discount': 10, 'tax': 5}.
Combinaison des deux
Il est possible d'utiliser à la fois *args et **kwargs dans la même fonction pour obtenir une flexibilité maximale — permettant de gérer n'importe quel nombre de valeurs positionnelles et toute combinaison de paramètres nommés.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain how the function handles both discounts and taxes together?
What happens if I don't provide any keyword arguments?
Can you show more examples of calling this function with different arguments?
Awesome!
Completion rate improved to 4.17
Combinaison d'Arguments Arbitraires Positionnels et Nommés
Glissez pour afficher le menu
Considérez une fonction qui calcule le coût total de plusieurs articles tout en vous permettant de passer un nombre quelconque de prix et des paramètres optionnels tels que des remises ou des taxes.
12345678910111213141516171819202122232425def calculate_total_cost(*prices, **settings): subtotal = sum(prices) discount = settings.get("discount", 0) tax = settings.get("tax", 0) discount_amount = subtotal * (discount / 100) taxed_amount = (subtotal - discount_amount) * (1 + tax / 100) print(f"Subtotal: ${subtotal:.2f}") if discount > 0: print(f"Discount: {discount}% (-${discount_amount:.2f})") else: print("No discount applied.") if tax > 0: print(f"Tax: {tax}% (+${taxed_amount - (subtotal - discount_amount):.2f})") print(f"Final total: ${taxed_amount:.2f}") print() # Examples of using the function calculate_total_cost(1000, 250, 50) calculate_total_cost(1200, 800, discount=10) calculate_total_cost(500, 750, 250, discount=5, tax=8)
Règles pour combiner des arguments arbitraires
Arguments positionnels arbitraires (*args)
*args collecte tous les arguments positionnels supplémentaires dans un tuple.
Dans cet exemple, la fonction peut accepter un nombre quelconque de prix d'articles sans avoir à les définir explicitement.
Par exemple :
calculate_total_cost(500, 250, 100)
Ici, *prices devient (500, 250, 100).
Arguments arbitraires nommés (**kwargs)
**kwargs collecte tous les arguments nommés (par mot-clé) dans un dictionnaire.
Cela permet à la fonction d'accepter des paramètres nommés supplémentaires comme discount ou tax, même s'ils n'ont pas été prédéfinis.
Par exemple :
calculate_total_cost(1000, 500, discount=10, tax=5)
Ici, **settings devient {'discount': 10, 'tax': 5}.
Combinaison des deux
Il est possible d'utiliser à la fois *args et **kwargs dans la même fonction pour obtenir une flexibilité maximale — permettant de gérer n'importe quel nombre de valeurs positionnelles et toute combinaison de paramètres nommés.
Merci pour vos commentaires !