Функції

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

Саме тому в Python, як і в будь-якій мові програмування, існує поняття функції.

У цьому розділі:

Що таке функція?

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

Функції бувають:

  • вбудовані — уже існують у мові, наприклад len(), print(), sum();
  • бібліотечні — імпортуються з модулів, наприклад math.sqrt(), random.choice();
  • користувацькі (створені програмістом) — ви самі визначаєте, що робить така функція.

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

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

Переваги використання функцій

Використання функцій — це не просто стиль написання коду, а стратегія, яка робить програму кращою у багатьох сенсах. Ось основні переваги:

1. Економія часу

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

Метафора: функція — це як форма для печива: замість того, щоб щоразу вирізати фігурки вручну, ми просто натискаємо — і отримуємо готовий результат.

2. Надійність

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

3. Покращена читабельність коду

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

  • ❌ Поганий приклад: Великий шматок коду на 100 рядків без єдиної функції.
  • ✅ Хороший приклад: 100 рядків коду розбиті на 5 зрозумілих функцій, кожна з яких виконує одне завдання.

4. Зручність для тестування

Коли код поділено на функції, кожну з них можна перевірити окремо. Це робить програму більш тестопридатною (англ. testable): ми можемо написати тести для кожної функції й упевнитися, що вона працює правильно незалежно від решти програми.

Наприклад, функцію calculate_discount(price, percent) можна протестувати окремо — не потрібно запускати всю програму.