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