Пакет — это каталог (папка), который может включать другие каталоги или модули. Модуль — это файл с исходным кодом, имеющий расширение .py. Пакеты используются для формирования пространства имен, что позволяет работать с модулями через указание уровня вложенности (с помощью оператора .
). Для импортирования пакетов используется тот же синтаксис, что и для работы с модулями.
Предположим, мы разрабатываем игру. Одна из возможных организаций наших пакетов и модулей может быть следующей:
Примечание: Каталог должен содержать файл с именем __init__.py
, чтобы Python мог рассматривать этот каталог как пакет. Данный файл можно оставить пустым, но обычно туда помещают код инициализации этого пакета.
Импорт модуля из пакета в Python
В Python мы можем импортировать модули из пакетов, используя точку .
. Например, если мы хотим импортировать модуль start из вышеприведенного пакета game, нам нужно написать следующее:
1 |
import game.Level.start |
Теперь, если этот модуль содержит функцию с именем select_difficulty(), то для ее использования следует указать полную ссылку:
1 |
game.Level.start.select_difficulty(2) |
from … import
Если вышеприведенная ссылка на функцию кажется длинной, то мы можем импортировать модуль следующим образом:
1 |
from game.Level import start |
И затем вызывать функцию будет проще:
1 |
start.select_difficulty(2) |
Импорт только необходимого функционала из пакета
Другой способ импортировать только необходимый функционал (функцию, класс или переменную) из модуля внутри пакета:
1 |
from game.Level.start import select_difficulty |
Теперь мы можем напрямую вызвать эту функцию:
1 |
select_difficulty(2) |
Хотя этот способ выглядит проще, но его не рекомендуется использовать. Указание полного пространства имен позволяет избежать путаницы и предотвращает конфликт имен.
При импорте пакетов Python просматривает список каталогов, определенных в sys.path.