Функції
У програмуванні часто трапляються завдання, які повторюються знову й знову: сортування списків, фільтрація даних, пошук елементів, обчислення середнього значення тощо. Було б нераціонально щоразу писати однакові алгоритми наново. Уявіть собі, що для кожного проєкту вам доводиться вручну переписувати одну й ту саму сортувальну функцію — це якби кожного разу будувати велосипед з нуля замість того, щоб просто сісти й поїхати.
Саме тому в Python, як і в будь-якій мові програмування, існує поняття функції.
У цьому розділі:
Що таке функція?
Функція (також зустрічаються синоніми: підпрограма, процедура) — це фрагмент коду, який виконує певне завдання і до якого можна багаторазово звертатися з різних частин програми. Завдяки цьому один раз написаний алгоритм можна використовувати десятки і сотні разів без дублювання коду.
Функції бувають:
- вбудовані — уже існують у мові, наприклад
len()
,print()
,sum()
; - бібліотечні — імпортуються з модулів, наприклад
math.sqrt()
,random.choice()
; - користувацькі (створені програмістом) — ви самі визначаєте, що робить така функція.
Функції — це основа для організації коду: вони допомагають структурувати програму, зменшити повторення, зробити код зручнішим для читання, тестування та підтримки.
Без функцій програми перетворилися б на хаотичну мішанину копіпасту, де кожен шматок логіки треба було б шукати та оновлювати вручну. А з функціями — код стає більш модульним, лаконічним і перевикористовуваним.
Переваги використання функцій
Використання функцій — це не просто стиль написання коду, а стратегія, яка робить програму кращою у багатьох сенсах. Ось основні переваги:
1. Економія часу
Коли алгоритм одного разу реалізований у вигляді функції, його можна багаторазово використовувати без повторного написання. Це значно скорочує час розробки та дозволяє зосередитись на вирішенні нових завдань, а не на технічному дублюванні коду.
Метафора: функція — це як форма для печива: замість того, щоб щоразу вирізати фігурки вручну, ми просто натискаємо — і отримуємо готовий результат.
2. Надійність
Функції часто створюються з розрахунком на багаторазове використання, і з часом вони проходять перевірку практикою. Використовуючи перевірені функції (вбудовані, бібліотечні або власні), ми зменшуємо ризик помилок — адже їхня логіка вже протестована та працює стабільно.
3. Покращена читабельність коду
Коли програма поділена на окремі невеликі функції з чіткими назвами, її легше зрозуміти. Замість великого суцільного блоку коду ми бачимо логічну структуру: що робиться, у якому порядку, з якими даними.
- ❌ Поганий приклад: Великий шматок коду на 100 рядків без єдиної функції.
- ✅ Хороший приклад: 100 рядків коду розбиті на 5 зрозумілих функцій, кожна з яких виконує одне завдання.
4. Зручність для тестування
Коли код поділено на функції, кожну з них можна перевірити окремо. Це робить програму більш тестопридатною (англ. testable): ми можемо написати тести для кожної функції й упевнитися, що вона працює правильно незалежно від решти програми.
Наприклад, функцію calculate_discount(price, percent)
можна протестувати окремо — не потрібно запускати всю програму.