Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Довільні Позиційні Аргументи | Довільні аргументи
Підручник з функцій Python
Секція 3. Розділ 1
single

single

Довільні Позиційні Аргументи

Свайпніть щоб показати меню

Ви вже знайомі з позиційними та необов'язковими аргументами. Але коли функція може отримувати багато вхідних даних або їх кількість невідома заздалегідь, можна використовувати довільні позиційні аргументи. Вони дозволяють функції приймати будь-яку кількість значень.

Note
Примітка

Кожен аргумент може бути будь-якою структурою даних (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 збирає всі передані позиційні аргументи у кортеж. Усередині функції використовується ім'я змінної без *. Результат буде правильним незалежно від кількості переданих аргументів.

Note
Примітка

Хоча можна використовувати будь-яке ім'я, загальноприйнята та зрозуміла форма — це *args.

1234567891011121314
def 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 або власного повідомлення.

1234567891011
def 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():

1234567
def 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, яка обчислює загальну вартість товарів у кошику, застосовуючи знижки залежно від загальної суми.

  1. Використовуйте довільну кількість позиційних аргументів з назвою prices у функції calculate_total.
  2. Якщо аргументи не передані, поверніть 'Your cart is empty.'.
  3. Знижки взаємовиключні – застосовується лише найбільша з можливих:
    • Застосовуйте знижку 20%, якщо сума $200 або більше.
    • Застосовуйте знижку 10%, якщо сума $100 або більше.
    • В інших випадках знижка не застосовується.
  4. Поверніть фінальну суму у форматі рядка: 'Final total: $X.XX'.

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 1
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

some-alt