Поєднання Позиційних та Іменованих Довільних Аргументів
Розгляньте функцію, яка обчислює загальну вартість декількох товарів, дозволяючи передавати будь-яку кількість цін і додаткові ключові параметри, такі як знижки або податки.
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)
Правила комбінування довільних аргументів
Позиційні довільні аргументи (*args)
*args збирає всі додаткові позиційні аргументи у кортеж.
У цьому прикладі функція може приймати будь-яку кількість цін товарів без необхідності явно їх визначати.
Наприклад:
calculate_total_cost(500, 250, 100)
Тут *prices стає (500, 250, 100).
Довільні іменовані аргументи (**kwargs)
**kwargs збирає всі іменовані (ключові) аргументи у словник.
Це дозволяє функції приймати додаткові іменовані параметри, такі як discount або tax, навіть якщо вони не були визначені заздалегідь.
Наприклад:
calculate_total_cost(1000, 500, discount=10, tax=5)
Тут **settings стає {'discount': 10, 'tax': 5}.
Комбінування обох варіантів
Можна використовувати одночасно і *args, і **kwargs в одній функції для досягнення максимальної гнучкості — це дозволяє обробляти будь-яку кількість позиційних значень та будь-яку комбінацію іменованих параметрів.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
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
Поєднання Позиційних та Іменованих Довільних Аргументів
Свайпніть щоб показати меню
Розгляньте функцію, яка обчислює загальну вартість декількох товарів, дозволяючи передавати будь-яку кількість цін і додаткові ключові параметри, такі як знижки або податки.
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)
Правила комбінування довільних аргументів
Позиційні довільні аргументи (*args)
*args збирає всі додаткові позиційні аргументи у кортеж.
У цьому прикладі функція може приймати будь-яку кількість цін товарів без необхідності явно їх визначати.
Наприклад:
calculate_total_cost(500, 250, 100)
Тут *prices стає (500, 250, 100).
Довільні іменовані аргументи (**kwargs)
**kwargs збирає всі іменовані (ключові) аргументи у словник.
Це дозволяє функції приймати додаткові іменовані параметри, такі як discount або tax, навіть якщо вони не були визначені заздалегідь.
Наприклад:
calculate_total_cost(1000, 500, discount=10, tax=5)
Тут **settings стає {'discount': 10, 'tax': 5}.
Комбінування обох варіантів
Можна використовувати одночасно і *args, і **kwargs в одній функції для досягнення максимальної гнучкості — це дозволяє обробляти будь-яку кількість позиційних значень та будь-яку комбінацію іменованих параметрів.
Дякуємо за ваш відгук!