Функції в мові Python
Створення власних підпрограм та команд для зручного, чистого і швидкого програмування
Блочна структура
Збирай код як конструктор LEGO
Повторне використання
Напиши один раз — виконуй 1000 разів
Власні команди
Розширюй можливості мови
Аналогія з реального життя: Рецепт та інструкція
Уявіть, що ви кухар у ресторані або будуєте замок у Minecraft. Щоб приготувати страву або побудувати вежу, ви виконуєте чітку серію кроків.
Рецепт "Приготування піци"
- Замісити тісто
- Нарізати овочі та сир
- Викласти соус і начинку
- Запікати 15 хвилин
💡 Замість пояснення кухареві всіх 100 дрібних кроків щоразу, шеф каже коротку команду: «Зроби піцу!»
У комп'ютерних іграх
- Кнопка "Стрибок" — запускає готову функцію стрибка персонажа.
- Кнопка "Фільтр" в Instagram — обробляє пікселі за заданим алгоритмом.
- Кнопка "√" у калькуляторі — обчислює квадратний корінь.
⚙️ Функція — це запакована інструкція з власною назвою.
Навіщо потрібні функції у програмуванні?
У 8-му класі ваші програми складали 10-20 рядків. У реальних проєктах (ігри, вебсайти, штучний інтелект) код налічує тисячі рядків! Без функцій розібратися в ньому неможливо.
Копіювати один і той самий шматок коду в 10 різних місць. Якщо знайдеться помилка — доведеться виправляти її 10 разів!
Код описується один раз у функції. Якщо виникає помилка — виправляємо тільки в одному місці.
(Не повторюйся)
Вбудовані функції Python (Built-in)
Ви вже давно користуєтеся функціями, які створили розробники Python! Згадаємо найпопулярніші з них:
Виводить дані на екран комп'ютера.
Отримує значення введене користувачем.
Повертає довжину рядка або списку.
Перетворює типи даних (число / рядок).
Визначає тип даних змінної.
Математичні обчислення над списками.
Як створити власну функцію? Оператор def
Для оголошення (визначення) власної функції використовується ключове слово def (від англ. define — визначити).
# 4 пробіли (відступ)
команди_тіла_функції
return результат
- Малими англійськими літерами (
calculate_area) - Замість пробілів — підкреслення
_ - Ім'я має відображати ДІЮ (що робить)
Усі команди всередині функції обов'язково мають відступ 4 пробіли (або Tab). Без відступу Python видасть помилку IndentationError.
Перша функція без параметрів
Створимо найпростішу функцію, яка виводить привітання у консоль:
# 1. Створення (визначення) функції def say_hello(): print("Привіт, 9-й клас!") print("Готові вивчати Python?") # 2. Викликаємо функцію 3 рази say_hello() say_hello() say_hello()
1. Визначення функції
Коли Python бачить рядок def say_hello():, він просто запам'ятовує цей рецепт, але ще НЕ виконує його!
2. Виклик функції (Call)
Щоб функція спрацювала, треба написати її ім'я та дужки: say_hello(). Кожен виклик виконує усі команди всередині її тіла.
print() заново!
Інтерактивна вправа: Збери функцію!
Натискайте на блоки коду в правильному порядку, щоб створити функцію show_menu(), яка виводить меню їдальні.
Доступні блоки (Натисніть):
Твій підсумковий код:
Параметри та Аргументи (Вхідні дані)
Щоб функція не просто виконувала одне й те саме, а була гнучкою, їй можна передавати параметри (інгредієнти).
Змінні, вказані у дужках при створенні функції. Вони виступають "заглушками" для майбутніх значень.
Конкретні значення, які ми передаємо у дужках під час виклику функції.
Аналогія з блендером: Функція — це блендер. Параметр — це роз'єм для фруктів. Аргумент — це конкретне яблуко або банан, яке ви туди кидаєте!
Функції з кількома параметрами
Функція може приймати 2, 3 або більше параметрів, розділених комами. Порядок передачі має значення!
# Обчислення площі прямокутника (без f-рядків!) def rectangle_area(length, width): area = length * width print("Площа прямокутника зі сторонами", length, "та", width, "=", area) # Передаємо різні значення довжини та ширини rectangle_area(5, 3) # Площа = 15 rectangle_area(10, 4) # Площа = 40
rectangle_area(5) без другого аргументу — виникне TypeError.
Повернення значень: Оператор return
Часто функція повинна не просто вивести щось на екран, а обчислити результат і повернути його назад у програму.
Просто показує результат людині на моніторі. Комп'ютер не може зберегти це значення у змінну.
print(a + b)
x = add(3, 4) # x буде None!
Повертає обчислений результат. Тепер його можна зберегти, додати до іншого числа або передати далі!
return a + b
x = add(3, 4) # x дорівнює 7!
return price * (1 - discount/100)
# Використовуємо повернуте значення в математичному виразі
final_price = calc_discount(1000, 20) + 50 # Доставка 50 грн
print("Разом до сплати:", final_price) # 850 грн
Дві важливі фішки оператора return
Як тільки Python доходить до оператора return, виконання функції негайно припиняється. Усі рядки після нього ігноруються!
if age < 18:
return "Заборонено"
return "Ласкаво просимо!"
print("Цей код ніколи не виконається")
Якщо у функції немає оператора return, вона автоматично повертає спеціальне значення None (порожнеча).
a = 5 + 5
res = test()
print(res) # Виведе: None
return для дострокового виходу з функції, якщо вхідні дані виявилися неправильними.
Локальні та Глобальні змінні (Область видимості)
Змінні у Python — як речі у будинку: деякі доступні всім (вдома), а деякі знаходяться лише у вашому власному рюкзаку.
Створюються всередині функції. Вони існують тільки поки функція працює, і невидимі поза нею.
secret = "Щоденник" # Локальна
my_room()
print(secret) # Помилка: NameError!
Створюються в основній програмі (поза функціями). Вони доступні для читання у будь-якій частині коду.
def show_school():
print(school_name) # Працює чудові!
Модифікація глобальних змінних: Оператор global
За замовчуванням функція може читати глобальну змінну, але не може змінювати її.
score = 0 # Глобальний рахунок гри def add_points(pts): global score # Вказуємо, що будемо змінювати саме ГЛОБАЛЬНУ score! score = score + pts add_points(10) print("Рахунок:", score) # Виведе: Рахунок: 10
global! Краще передавати дані через параметри та повертати через return.
Виклик функцій з інших функцій
Функції можна викликати всередині інших функцій, збираючи складні програми з простих і зрозумілих цеглинок.
# Допоміжна функція 1: Додавання def add(a, b): return a + b # Допоміжна функція 2: Піднесення до квадрата def square(n): return n ** 2 # Головна функція: Сума квадратів def sum_of_squares(x, y): return add(square(x), square(y)) result = sum_of_squares(3, 4) # (3² + 4²) = 9 + 16 = 25 print(result) # Виведе: 25
Рекурсія: Функція, що викликає сама себе
Рекурсія — це прийом у програмуванні, коли функція викликає саму себе для розв'язання меншої частини тієї ж задачі.
Ви відкриваєте велику матріошку і бачите всередині таку саму матріошку, але меншу. Ви продовжуєте відкривати їх, поки не дійдете до найменшої суцільної ляльки (базовий випадок).
Рекурсивна функція ОБОВ'ЯЗКОВО повинна мати умову зупинки (базовий випадок). Без цього програма зациклиться і виведе RecursionError!
Рекурсивний факторіал: factorial(n)
Факторіал числа n! — це добуток усіх чисел від 1 до n. Наприклад: 5! = 5 * 4 * 3 * 2 * 1 = 120.
def factorial(n): # 1. Базовий випадок (зупинка) if n == 1: return 1 # 2. Рекурсивний крок else: return n * factorial(n - 1) print(factorial(4)) # Виведе: 24
Інтерактивний тренажер Python коду
Оберіть приклад коду або відредагуйте його, після чого натисніть кнопку «Запустити код».
Перевірка знань: Інтерактивний Квіз
Яке ключове слово використовується для створення власної функції в Python?
Підсумок уроку: Шпоргалка програміста
Створюємо функцію за допомогою def name(): з відступ 4 пробіли.
Вхідні дані пишуться у дужках. Передаємо фактичні аргументи під час виклику.
Повертає значення з функції і миттєво зупиняє її. Без нього повертає None.
Змінні всередині функції — локальні. Змінні ззовні — глобальні (змінюємо через global).
Виклик функції самої себе. Обов'язково вимагає умову зупинки (базовий випадок).
Тепер ти вмієш писати власні зручні команды в Python! Дякуємо за увагу!