Функції в Python

1 / 19
Тема 34 • 9 Клас

Функції в мові Python

Створення власних підпрограм та команд для зручного, чистого і швидкого програмування

Блочна структура

Збирай код як конструктор LEGO

Повторне використання

Напиши один раз — виконуй 1000 разів

Власні команди

Розширюй можливості мови

Використовуйте клавіші або пробіл для навігації
01

Аналогія з реального життя: Рецепт та інструкція

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

Рецепт "Приготування піци"

  • Замісити тісто
  • Нарізати овочі та сир
  • Викласти соус і начинку
  • Запікати 15 хвилин

💡 Замість пояснення кухареві всіх 100 дрібних кроків щоразу, шеф каже коротку команду: «Зроби піцу!»

У комп'ютерних іграх

  • Кнопка "Стрибок" — запускає готову функцію стрибка персонажа.
  • Кнопка "Фільтр" в Instagram — обробляє пікселі за заданим алгоритмом.
  • Кнопка "√" у калькуляторі — обчислює квадратний корінь.

⚙️ Функція — це запакована інструкція з власною назвою.

Висновок: Функція — це підпрограма, якій надано ім'я. Вона виконує конкретну задачу і може бути викликана у будь-який момент.
02

Навіщо потрібні функції у програмуванні?

У 8-му класі ваші програми складали 10-20 рядків. У реальних проєктах (ігри, вебсайти, штучний інтелект) код налічує тисячі рядків! Без функцій розібратися в ньому неможливо.

Погано: Дублювання коду

Копіювати один і той самий шматок коду в 10 різних місць. Якщо знайдеться помилка — доведеться виправляти її 10 разів!

Добре: З допомогою функцій

Код описується один раз у функції. Якщо виникає помилка — виправляємо тільки в одному місці.

DRY
Don't Repeat Yourself
(Не повторюйся)
Модульність
Програма ділиться на прості зрозумілі блоки
Чистота
Код легко читати та тестувати іншим розробникам
03

Вбудовані функції Python (Built-in)

Ви вже давно користуєтеся функціями, які створили розробники Python! Згадаємо найпопулярніші з них:

print()

Виводить дані на екран комп'ютера.

print("Привіт!")
input()

Отримує значення введене користувачем.

name = input()
len()

Повертає довжину рядка або списку.

len("Python") # 6
int() / str()

Перетворює типи даних (число / рядок).

age = int("14")
type()

Визначає тип даних змінної.

type(5.5) # float
sum() / max()

Математичні обчислення над списками.

max(3, 8, 2) # 8
Головне питання: А що робити, якщо потрібної функції немає в Python? Створити власну!
04

Як створити власну функцію? Оператор def

Для оголошення (визначення) власної функції використовується ключове слово def (від англ. define — визначити).

Синтаксична схема:
def ім_я_функції(параметри):
# 4 пробіли (відступ)
команди_тіла_функції
return результат
Правила найменування імені:
  • Малими англійськими літерами (calculate_area)
  • Замість пробілів — підкреслення _
  • Ім'я має відображати ДІЮ (що робить)
Правило відступів (Indentation):

Усі команди всередині функції обов'язково мають відступ 4 пробіли (або Tab). Без відступу Python видасть помилку IndentationError.

05

Перша функція без параметрів

Створимо найпростішу функцію, яка виводить привітання у консоль:

main.py
# 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(). Кожен виклик виконує усі команди всередині її тіла.

✨ Надрукується 6 рядків привітань, хоч ми не копіювали print() заново!
06

Інтерактивна вправа: Збери функцію!

Натискайте на блоки коду в правильному порядку, щоб створити функцію show_menu(), яка виводить меню їдальні.

Доступні блоки (Натисніть):

Твій підсумковий код:

// Клацайте по блоках зліва...
Зберіть код і натисніть «Перевірити»
07

Параметри та Аргументи (Вхідні дані)

Щоб функція не просто виконувала одне й те саме, а була гнучкою, їй можна передавати параметри (інгредієнти).

Формальні параметри

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

def greet(name): # name - параметр
Фактичні аргументи

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

greet("Максим") # "Максим" - аргумент

Аналогія з блендером: Функція — це блендер. Параметр — це роз'єм для фруктів. Аргумент — це конкретне яблуко або банан, яке ви туди кидаєте!

08

Функції з кількома параметрами

Функція може приймати 2, 3 або більше параметрів, розділених комами. Порядок передачі має значення!

rectangle_math.py
# Обчислення площі прямокутника (без 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.
09

Повернення значень: Оператор return

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

Лише print()

Просто показує результат людині на моніторі. Комп'ютер не може зберегти це значення у змінну.

def add(a, b):
  print(a + b)
x = add(3, 4) # x буде None!
Оператор return

Повертає обчислений результат. Тепер його можна зберегти, додати до іншого числа або передати далі!

def add(a, b):
  return a + b
x = add(3, 4) # x дорівнює 7!
def calc_discount(price, discount):
    return price * (1 - discount/100)

# Використовуємо повернуте значення в математичному виразі
final_price = calc_discount(1000, 20) + 50 # Доставка 50 грн
print("Разом до сплати:", final_price) # 850 грн
10

Дві важливі фішки оператора return

1 Миттєве завершення функції

Як тільки Python доходить до оператора return, виконання функції негайно припиняється. Усі рядки після нього ігноруються!

def check_age(age):
  if age < 18:
    return "Заборонено"
  return "Ласкаво просимо!"
  print("Цей код ніколи не виконається")
2 Значення None (Нічого)

Якщо у функції немає оператора return, вона автоматично повертає спеціальне значення None (порожнеча).

def test():
  a = 5 + 5

res = test()
print(res) # Виведе: None
💡 Порада: Використовуйте return для дострокового виходу з функції, якщо вхідні дані виявилися неправильними.
11

Локальні та Глобальні змінні (Область видимості)

Змінні у Python — як речі у будинку: деякі доступні всім (вдома), а деякі знаходяться лише у вашому власному рюкзаку.

Локальні змінні

Створюються всередині функції. Вони існують тільки поки функція працює, і невидимі поза нею.

def my_room():
  secret = "Щоденник" # Локальна

my_room()
print(secret) # Помилка: NameError!
Глобальні змінні

Створюються в основній програмі (поза функціями). Вони доступні для читання у будь-якій частині коду.

school_name = "Школа №1" # Глобальна

def show_school():
  print(school_name) # Працює чудові!
🔑 Запам'ятайте: Те, що створено всередині функції — «помирає», коли функція закінчує роботу.
12

Модифікація глобальних змінних: Оператор global

За замовчуванням функція може читати глобальну змінну, але не може змінювати її.

Як змінити глобальну змінну всередині функції:
score = 0 # Глобальний рахунок гри

def add_points(pts):
    global score  # Вказуємо, що будемо змінювати саме ГЛОБАЛЬНУ score!
    score = score + pts

add_points(10)
print("Рахунок:", score) # Виведе: Рахунок: 10
                    
⚠️ Застереження програміста: Не зловживайте global! Краще передавати дані через параметри та повертати через return.
13

Виклик функцій з інших функцій

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

# Допоміжна функція 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
                    
1. Крок 1
square(3) → 9
2. Крок 2
square(4) → 16
3. Крок 3
add(9, 16) → 25
14

Рекурсія: Функція, що викликає сама себе

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

Аналогія: Матріошка

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

Головне правило рекурсії

Рекурсивна функція ОБОВ'ЯЗКОВО повинна мати умову зупинки (базовий випадок). Без цього програма зациклиться і виведе RecursionError!

Приклад застосування: пошук файлів у вкладених папках, побудова фракталів, обчислення факторіалу.
15

Рекурсивний факторіал: 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
                        
factorial(4) 4 * factorial(3)
factorial(3) 3 * factorial(2)
factorial(2) 2 * factorial(1)
factorial(1) повертає 1 (Зупинка!)
16

Інтерактивний тренажер Python коду

Оберіть приклад коду або відредагуйте його, після чого натисніть кнопку «Запустити код».

editor.py
Консоль виводу:
Натисніть «Запустити код»...
17

Перевірка знань: Інтерактивний Квіз

Питання 1 з 5 Бали: 0

Яке ключове слово використовується для створення власної функції в Python?

18

Підсумок уроку: Шпоргалка програміста

Оголошення

Створюємо функцію за допомогою def name(): з відступ 4 пробіли.

Параметри

Вхідні дані пишуться у дужках. Передаємо фактичні аргументи під час виклику.

Оператор return

Повертає значення з функції і миттєво зупиняє її. Без нього повертає None.

Видимість

Змінні всередині функції — локальні. Змінні ззовні — глобальні (змінюємо через global).

Рекурсія

Виклик функції самої себе. Обов'язково вимагає умову зупинки (базовий випадок).

Молодець!

Тепер ти вмієш писати власні зручні команды в Python! Дякуємо за увагу!