single
Довільні Позиційні Аргументи
Свайпніть щоб показати меню
Ви вже знайомі з позиційними та необов'язковими аргументами. Але коли функція може отримувати багато вхідних даних або їх кількість невідома заздалегідь, можна використовувати довільні позиційні аргументи. Вони дозволяють функції приймати будь-яку кількість значень.
Кожен аргумент може бути будь-якою структурою даних (list, dict тощо). Довільні аргументи дозволяють передавати стільки таких об'єктів, скільки потрібно.
Щоб визначити довільні позиційні аргументи, поставте зірочку * перед іменем параметра. Приклад:
12345678# Define function with arbitrary positional arguments named values def calculate_sum(*values): return sum(values) # Test the function using different number of arguments print(calculate_sum(1, 2, 3)) print(calculate_sum(1, 2, 3, 4)) print(calculate_sum(1, 2, 3, 4, 5))
Тут *values збирає всі передані позиційні аргументи у кортеж. Усередині функції використовується ім'я змінної без *. Результат буде правильним незалежно від кількості переданих аргументів.
Хоча можна використовувати будь-яке ім'я, загальноприйнята та зрозуміла форма — це *args.
1234567891011121314def example_function(*args): print(type(args)) print(args) for arg in args: print(arg) print('Call without arguments:') example_function() print('\nCall with one argument:') example_function(1) print('\nCall with multiple arguments:') example_function(1, 2, 3, 'hello', [4, 5, 6])
Як показано:
- Без аргументів →
args— це(); - Один аргумент →
(1,); - Декілька аргументів → всі значення містяться у кортежі, наприклад,
(1, 2, 3, 'hello', [4, 5, 6]).
*args поводиться як звичайний кортеж, забезпечуючи повну гнучкість при обробці багатьох вхідних даних.
Оскільки *args — це просто кортеж, можна застосовувати будь-яку логіку до його значень, включаючи умовні оператори. Наприклад, після підрахунку суми всіх цін можна перевірити загальну суму та застосувати різні правила залежно від результату.
Обробка порожніх аргументів
Оскільки *args збирає вхідні дані у кортеж, існує ймовірність, що користувач викличе вашу функцію без жодного аргументу (example_function()). У такому випадку args буде порожнім кортежем: ().
Рекомендується перевіряти, чи є *args порожнім перед обробкою даних. Це легко зробити, оскільки порожні кортежі вважаються "хибними" у Python.
Ось два поширені способи обробки порожнього кортежу *args.
Використання if not args
Можна використати if not args для виявлення порожнього кортежу та негайної обробки, наприклад, повернення 0 або власного повідомлення.
1234567891011def calculate_average(*prices): # Checking if the tuple is empty if not prices: return 'No prices provided!' # If it's not empty, proceed with the calculation return sum(prices) / len(prices) # Testing the function print(calculate_average(10, 20, 30)) # Output: 20.0 print(calculate_average()) # Output: No prices provided!
Перевірка довжини за допомогою len()
Альтернативно, можна перевірити, чи загальна кількість аргументів дорівнює нулю, використовуючи функцію len():
1234567def strict_sum(*values): if len(values) == 0: print('Warning: No values received.') return 0 return sum(values) print(strict_sum()) # Output: Warning: No values received. -> 0
Проведіть, щоб почати кодувати
Реалізуйте функцію calculate_total, яка обчислює загальну вартість товарів у кошику, застосовуючи знижки залежно від загальної суми.
- Використовуйте довільну кількість позиційних аргументів з назвою prices у функції
calculate_total. - Якщо аргументи не передані, поверніть
'Your cart is empty.'. - Знижки взаємовиключні – застосовується лише найбільша з можливих:
- Застосовуйте знижку 20%, якщо сума $200 або більше.
- Застосовуйте знижку 10%, якщо сума $100 або більше.
- В інших випадках знижка не застосовується.
- Поверніть фінальну суму у форматі рядка:
'Final total: $X.XX'.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат