Пакеты Python

Пакет — это контейнер, содержащий различные функции для выполнения определённых задач. Например, пакет math включает функцию sqrt() для извлечения квадратного корня числа.

Работая над большими проектами, нам приходится иметь дело с большим количеством кода, и запись всего в одном файле сделает наш код беспорядочным. Вместо этого мы можем разделить код на несколько файлов, храня связанный код вместе в пакетах.

Теперь мы можем использовать пакет всякий раз, когда он нам нужен в проектах. Таким образом, мы также можем повторно использовать наш код.


Структура модели пакета в программировании на Python

Предположим, мы разрабатываем игру. Одна из возможных организаций пакетов и модулей показана на рисунке ниже.

Структура модели пакета Game

Примечание

Каталог должен содержать файл с именем __init__.py, чтобы Python считал его пакетом. Этот файл может быть пустым, но обычно в него помещают код инициализации для этого пакета.


Импорт модуля из пакета

В Python мы можем импортировать модули из пакетов с помощью оператора точки (.).

Например, если мы хотим импортировать модуль start из приведённого выше примера, это можно сделать следующим образом:

import Game.Level.start

Теперь, если этот модуль содержит функцию select_difficulty(), мы должны использовать полное имя для обращения к ней.

Game.Level.start.select_difficulty(2)

Импорт без префикса пакета

Если такая конструкция кажется длинной, мы можем импортировать модуль без префикса пакета:

from Game.Level import start

Теперь можно вызвать функцию проще:

start.select_difficulty(2)

Импорт только нужной функциональности

Другой способ — импортировать только необходимую функцию (или класс или переменную) из модуля внутри пакета:

from Game.Level.start import select_difficulty

Теперь мы можем напрямую вызывать эту функцию.

select_difficulty(2)

Совет

Хотя такой способ проще, он не рекомендуется. Использование полного пространства имён позволяет избежать путаницы и предотвращает столкновение двух одинаковых имён идентификаторов.

При импорте пакетов Python ищет в списке каталогов, определённых в sys.path, аналогично пути поиска модулей.


Видео: пакеты Python — организуйте свой код