Створення пакетів та модулів

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

Створення пакетів та модулів

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

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

Ви можете імпортувати код із модулів за допомогою оператора from ... import ....

Приклад:

# Файл salary_calculations.py
def add_bonus(salary, bonus_percents):
    return salary * (1 + bonus_percents / 100)

Щоб використати функцію add_bonus у файлі main.py, потрібно її імпортувати:

from salary_calculations import add_bonus

salary = 1000
bonus = 15
salary_with_bonus = add_bonus(salary, bonus)
print(salary_with_bonus)  # 1150

Або імпортувати весь модуль:

import salary_calculations

salary = 1000
bonus = 15
salary_with_bonus = salary_calculations.add_bonus(salary, bonus)
print(salary_with_bonus)  # 1150

Окремі файли .py — це модулі, з яких можна імпортувати потрібні функції та змінні.

Пакет — це папка, що містить модулі Python. Робота з пакетами аналогічна роботі з модулями, але пакети дозволяють краще організувати код.

Наприклад, якщо модуль salary_calculations.py розміщено в папці calculations, його можна імпортувати так:

from calculations import salary_calculations

salary = 1000
bonus = 15
salary_with_bonus = salary_calculations.add_bonus(salary, bonus)
print(salary_with_bonus)  # 1150

Або лише необхідну функцію:

from calculations.salary_calculations import add_bonus

salary = 1000
bonus = 15
salary_with_bonus = add_bonus(salary, bonus)
print(salary_with_bonus)  # 1150

Розбивка на пакети і модулі може тривати стільки, скільки потрібно, щоб зробити код зручним для роботи. Основне правило — називати пакети та модулі так само, як і змінні Python (тільки літери, цифри та _, ім'я не починається з цифри).

Навіщо потрібен init.py