Пакеты в Python: структура, импорт и лучшие практики
Пакеты в Python
Узнайте, как организовывать растущую кодовую базу с помощью пакетов Python и как эффективно импортировать собственные или сторонние модули.
Видео: Пакеты Python — организация кода
Что такое пакеты?
Так как мы группируем файлы на диске в папки для наглядности, Python использует пакеты для объединения связанных модулей. Пакет — это просто каталог, содержащий файл __init__.py — это сообщает Python, что папку следует рассматривать как пространство имён.
Когда проект расширяется, хранение похожих модулей вместе в пакете делает проект управляемым и самодокументируемым. Пакеты также могут содержать подпакеты, отражая вложенность директорий.
Например, структура игрового проекта может выглядеть так:

Импорт модулей из пакета
Модули импортируются с помощью точечной нотации (.). Чтобы подключить start.py из пакета Game/Level, используйте:
import Game.Level.start
Если start.py определяет функцию select_difficulty(), вызовите её с полным пространством имён:
Game.Level.start.select_difficulty(2)
Для уменьшения вербальности можно импортировать модуль в локальное пространство имён:
from Game.Level import start
Теперь select_difficulty доступна как:
start.select_difficulty(2)
Для ещё более компактного импорта можно импортировать саму функцию:
from Game.Level.start import select_difficulty
Тогда вызов становится простым:
select_difficulty(2)
Хотя такой импорт лаконичен, он может привести к конфликтам имён, если разные модули предоставляют одинаковые символы. Использование полного пути пакета сохраняет пространство имён явным и безопасным.
Python разрешает импорт пакетов, просматривая директории, перечисленные в sys.path, точно так же, как для обычных модулей.
Python
- Освоение типов данных в Python: практическое руководство
- Мастерство операторов Python: Полное руководство
- Оператор pass в Python: практическое руководство
- Аргументы функций в Python: позиционные, именованные и параметры по умолчанию
- Словари в Python: создание, манипуляции и продвинутые техники
- Итераторы в Python: как они работают и как создать свои
- Замыкания в Python: как вложенные функции захватывают переменные
- Модуль datetime в Python: практическое руководство по датам, времени и часовым поясам
- Освоение Python time.sleep(): лучшие практики, многопоточность и реальные примеры
- Обзор Python: высокоуровневый, читаемый, интерактивный и объектно-ориентированный язык