1 Покроковий розбір: Як працюють функції?
Функція — це підпрограма (іменований блок коду), яку ми один раз описуємо, а потім можемо викликати за назвою скільки завгодно разів.
Найпростіша функція (без параметрів)
Ключове слово def походить від англійського слова define (визначати). Ми вигадуємо ім'я функції, ставимо дужки () та двокрапку :. Усе, що відноситься до функції, пишеться з відступом у 4 пробіли.
def say_hello(): print("Привіт! Я функція робота.") print("Готовий допомагати!")
# Просто пишемо ім'я та дужки: say_hello() say_hello() # Надрукує текст ДВІЧІ!
Передаємо дані: Параметри та Аргументи
Щоб функція не робила завжди одне й те саме, їй можна передавати «вхідні дані» (параметри). Вони вказуються в дужках при створенні.
def greet_person(name): # name — це параметр (змінна-контейнер) print("Вітаю,", name, "! Приємного дня!") # Викликаємо з різними аргументами: greet_person("Олена") # Надрукує: Вітаю, Олена ! Приємного дня! greet_person("Богдан") # Надрукує: Вітаю, Богдан ! Приємного дня!
Назва змінної у дужках при визначенні функції (name).
Конкретне значення, яке ми підставляємо при виклику ("Олена").
Кілька параметрів
Параметрів може бути два, три або більше. Вони розділяються комами. Порядок має значення!
def show_sum(a, b): result = a + b print("Сума чисел", a, "і", b, "дорівнює:", result) show_sum(10, 15) # a стане 10, b стане 15. Надрукує: 25
Різниця між `print()` та `return`
Це головне місце, де помиляються початківці!
print()— просто показує текст на екрані. Програма не може зберегти це значення або використати у подальших розрахунках.return— повертає результат назад у головну програму, щоб його можна було зберегти у змінну!
def add_bad(a, b): print(a + b) x = add_bad(3, 4) # x буде дорівнювати None! # Ми НЕ можемо помножити x далі.
def add_good(a, b): return a + b x = add_good(3, 4) # x отримує 7 total = x * 2 # total отримує 14 print(total) # Надрукує: 14
Запам'ятайте: Як тільки Python доходить до слова return, виконання функції миттєво припиняється!
Де видно змінні? (Scope / Область видимості)
1. Локальні змінні (Всередині)
Створені всередині функції. Існують тільки поки працює функція. Поза функцією до них звернутися неможливо (виникне помилка NameError).
2. Глобальні змінні (Зовні)
Створені в основному коді. Їх видно усюди. Але щоб змінити таку змінну всередині функції, потрібне ключове слово global.
score = 100 # Глобальна змінна (загальний рахунок гри) def add_bonus(): global score # Повідомляємо, що будемо змінювати саме зовнішній score score = score + 50 add_bonus() print(score) # Надрукує: 150
Проста рекурсія (Функція викликає саму себе)
Рекурсія — це коли функція всередині свого коду викликає саму себе. Головне правило рекурсії: обов'язково має бути умова зупинки (базовий випадок), інакше програма зациклиться і видасть помилку!
def countdown(n): if n <= 0: print("Старт! 🚀") # Базовий випадок: зупинка else: print(n) countdown(n - 1) # Рекурсивний виклик із меншим числом countdown(3) # Виведе у консоль: # 3 # 2 # 1 # Старт! 🚀
Приклади з реальних програм
Подивіться, як функції спрощують розв'язання реальних завдань:
def get_ticket_price(age): if age < 12: return 80 # Дитячий квиток else: return 150 # Дорослий квиток price1 = get_ticket_price(10) # поверне 80 price2 = get_ticket_price(16) # поверне 150 print("Сума:", price1 + price2) # Надрукує: 230
Як це працює: Залежно від переданого віку функція повертає правильну ціну через return, і ми можемо додати їх в один чек.
def make_hashtag(tag): result = "#" + tag.lower() return result print(make_hashtag("Python")) # Надрукує: #python print(make_hashtag("School")) # Надрукує: #school
Як це працює: Вхідне слово перетворюється на малі літери та до нього додається символ `#`.
Закріплення знань на практиці
Розв'яжіть 6 простих крокових завдань для перевірки себе!
За допомогою якого ключового слова в Python створюють власну функцію?
Що надрукує ця програма під час виконання?
def double_number(x): return x * 2 result = double_number(7) + 3 print(result)
Учень написав таку функцію, але змінна total отримує значення None. У чому помилка?
def calc_discount(price): print(price - 50) total = calc_discount(200)
Яке слово потрібно вставити на місці пропуску, щоб функція могла оновити значення зовнішньої змінної coins?
coins = 10 def add_coins(amount): coins coins = coins + amount add_coins(5)
У рекурсивній функції зворотного відліку пропущено умову зупинки. Виберіть правильний блок коду для першого рядка:
def count_down(n): # Що має бути тут? print("Фініш!") else: print(n) count_down(n - 1)
Задача: Напишіть функцію multiply(a, b), яка приймає два числа та повертає результат їх множення за допомогою return.
Ваш підсумок тренування
Автоматична оцінка засвоєння матеріалу про функції