JavaRush /Курси /Модуль 1: Python Core /Параметри функції

Параметри функції

Модуль 1: Python Core
Рівень 4 , Лекція 8
Відкрита

9.1 Параметри vs аргументи

У початківців часто виникає плутанина між термінами «параметри» і «аргументи», але їхня різниця важлива для розуміння функціонального програмування.

Параметри — це змінні, які перераховані в визначенні функції. Вони представляють імена, які функція використовує для посилання на передані їй значення. Параметри функції служать як «заповнювачі» для значень, які будуть використані в тілі функції. Коли ти визначаєш функцію, ти описуєш її параметри.


def print_info(name, age):  # name і age — це параметри
    print(f"Name: {name}, Age: {age}")        

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


print_info("Alice", 30)  # "Alice" і 30 — це аргументи 

Види аргументів

  1. Позиційні аргументи: значення передаються в порядку, в якому параметри визначені.
  2. Ключові аргументи: аргументи, передані функції з використанням імені параметра, що дозволяє їм бути перерахованими в будь-якому порядку після позиційних аргументів.
  3. Аргументи за замовчуванням: при визначенні функції параметрам можна присвоїти значення за замовчуванням.

Позиційні аргументи ти вже використовуєш, а ключові аргументи і аргументи за замовчуванням ми розглянемо в наступних лекціях.

Різниця між параметрами і аргументами в Python допомагає зрозуміти, як функції отримують і обробляють дані. Це різниця важлива для створення гнучких функцій, які можна легко адаптувати до різних умов виклику, роблячи твій код більш модульним і повторно використовуваним.

9.2 Значення за замовчуванням

Аргументи за замовчуванням у Python — це механізм, що дозволяє функціям заздалегідь вказати передвизначені значення для одного або декількох параметрів. Ця можливість робить виклик функції більш зручним і гнучким, оскільки не вимагає явного зазначення всіх аргументів кожного разу при виклику функції.

Визначення аргументів за замовчуванням

Аргументи за замовчуванням задаються у визначенні функції, де при оголошенні параметра вказується значення, яке буде використовуватися, якщо при виклику функції аргумент не буде передано:


def print_info(name, company='Unknown'):
    print(f"Name: {name}, Company: {company}")

У цьому прикладі company має значення за замовчуванням 'Unknown'.

  • Спрощення виклику функцій: Функції з багатьма параметрами можуть бути викликані із зазначенням тільки найважливіших аргументів.
  • Гнучкість: Функції можна адаптувати до різних сценаріїв використання без зміни їх коду.
  • Читабельність коду: Явне вказання значень за замовчуванням робить код самодокументованим.

Важливі нюанси

Незмінність: Значення за замовчуванням для аргументів повинні бути незмінними типами даних, такими як числа, рядки чи кортежі. Використання змінюваних типів (наприклад списків чи словників) може призвести до небажаних побічних ефектів через те, що зміни в цих об'єктах зберігаються між викликами функції.

Порядок аргументів: Параметри з аргументами за замовчуванням повинні слідувати після параметрів без аргументів за замовчуванням у визначенні функції.

Ще приклад:


def create_user(username, is_admin=False):
    if is_admin:
        print(f"User {username} is an admin.")
    else:
        print(f"User {username} is a regular user.")
        
create_user("Alice")  # is_admin == False
create_user("Bob", is_admin=True)  # is_admin == True
create_user("Karl", True)  # is_admin == True

Вищенаведені 3 способи виклику функції з аргументом за замовчуванням: кожен з них робочий.

9.3 Передача параметрів за іменем

Передача параметрів у функцію за іменем дозволяє більш ясно вказати, які значення передаються які аргументи, покращуючи читабельність коду і зменшуючи ймовірність помилок, пов'язаних з неправильним порядком аргументів.

Щоб передати значення параметра за іменем, потрібно при виклику функції призначити значення певному параметру:


функція(параметр1 = значення, параметр2 = значення)

Цей спосіб особливо корисний при роботі з функціями, що мають багато параметрів або параметри зі значеннями за замовчуванням.

Переваги передачі параметрів за іменем

  • Ясність і читабельність: Вказання імені параметра при його виклику робить код легшим для розуміння для інших розробників або при поверненні до власного старого коду.
  • Гнучкість: Параметри можуть бути передані в будь-якому порядку, що зручно, коли функція має багато параметрів.
  • Уникнення помилок: Немає необхідності пам'ятати порядок параметрів функції, що зменшує ймовірність помилок, пов'язаних з неправильним передаванням значень.

Приклади використання


def create_profile(name, age, job):
    print(f"Name: {name}")
    print(f"Age: {age}")
    print(f"Job: {job}")
        
create_profile(age = 28, name = "John", job = "Developer")

У цьому прикладі параметри передаються не за порядком, але кожному з них явно присвоєно значення, що робить виклик функції більш гнучким і зрозумілим.

Приклад 2:

До речі, ти вже стикався раніше з передачею параметрів за іменем. У функції print(), пам'ятаєш?

print(1, 2, 3, 4, 5, sep="-", end="!!") 

Так, це саме той випадок 😊

Особливості та обмеження

Параметри, передані за іменем, повинні слідувати після параметрів без імені, якщо такі є у визначенні функції.

Не можна використовувати одне і те ж ім'я параметра більше одного разу при виклику функції.

Передача параметрів за іменем — це потужна можливість Python, яка робить код більш безпечним і зрозумілим, особливо у випадках використання функцій з багатьма аргументами чи опціональними значеннями.

Коментарі (3)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
Alex Stasyuk Рівень 25
3 грудня 2025
В задачі про кота трохи збив зразок з квадратними дужками, думав що це частина формату
Дмитро Рівень 30
30 вересня 2025
"Передача параметрів за іменем — це потужна можливість Python" 😁 Ахахаха. І смішно і грішно... Ніби це вміє тільки Python... Під кінець навчання, й досі будуть нахвалювати Python? При тому що Python вивозить тільки завдяки бібліотекам/фреймворкам, а сам по собі має не самий зручний і зрозумілий синтаксис. По ходу завдяки таким похвалам, Python і набув популярності у початківців, бо ті просто не вкурсі, що буває краще, зручніше і інтуітивно зрозуміліше)
Максим Рівень 9
13 березня 2025

print(1, 2, 3, 4, 5, sep="-", end="!!")
якщо я не помиляюсь, там був сепаратор *