Автор оригинала: Pankaj Kumar.
Сегодня мы узнаем о пакетах в Python. Прежде чем приступить к этому руководству, вы должны иметь знания о модулях Python.
Что такое пакеты в Python?
Пакет в Python – это коллекция нескольких файлов модулей в одном каталоге. Это позволяет для более легкой переносимости со всеми приложенными зависимостями в одной папке.
Мы используем нотацию DOT для доступа к функциональности модуля в пакете.
Например, если вы хотите получить доступ к модулю «Famcure_Module» под пакетом с именем «Famcure_package», вы можете сделать это, используя образец_package.sample_module
Отказ
Короче говоря, пакет Python облегчает работу с несколькими модулями.
Как создать пакет в Python?
Предположим, вы хотите разработать коллекцию модулей для обработки музыкальных файлов. Посмотрите на следующую структуру. Вот как вы организуете разные файлы в папке пакета. В нашем случае папка пакета верхнего уровня – «музыка»:
music/ Top-level package __init__.py Initialize the music package formats/ Subpackage for file conversions __init__.py wavread.py wavwrite.py aiffread.py aiffwrite.py auread.py auwrite.py ... effects/ Subpackage for sound effects __init__.py echo.py surround.py reverse.py ... filters/ Subpackage for filters __init__.py equalizer.py vocoder.py karaoke.py ...
Каждая пакет в Python должна иметь __init__.py
Файл, который гарантирует, что этот каталог будет рассматриваться как пакет Python.
Вообще __init__.py
Может быть просто пустой файл или он также может быть исполняемым кодом инициализации для пакета или установить __All__
Переменная, которая будет изучена в последней части этого учебника.
Для импорта индивидуального модуля из пакета можно использовать любой из следующих способов.
import music.formats.wavwrite
Или же
from music.formats import wavwrite
Приведенные выше заявления загружают подмодулю music.formats.wavwrite
Отказ
Предположим, модуль wavwrite.py
имеет функцию имени writefile (afilename)
Это принимает имя файла в качестве своего аргумента, мы называем его таким же ниже:
import music.formats.wavwrite ... ... music.formats.wavwrite.writeFile(outputFileName)
Или во втором пути-
from music.formats import wavwrite ... ... wavwrite.writeFile(outputFileName)
Мы можем пойти еще глубже в операторе импорта, где мы только импортируем функцию, которые нам нужны. Вот пример того, как вы можете сделать то же самое:
from music.formats.wavwrite import writeFile ... ... writeFile(outputFileName)
Как импортировать все модули из пакета Python?
Любопытный читатель может удивиться, что, если кто-то пишет От музыки. Форматы импортируют *
Как мы сделали, импортируя из модуля, не было бы легче?
Хотя это, безусловно, легче, проблема будет чрезмерным использованием памяти, так как большинство функций не будут использоваться в ваших программах.
Идеальное решение, где автор пакета обеспечивает явный индекс пакета.
Если пакет __init__.py
код определяет список с именем __All__
, это будет рассмотрено как индекс имена модулей, которые должны быть импортированы, когда От музыки. Форматы импортируют *
встречается.
Давайте посмотрим другой пример, чтобы понять эту концепцию четко. Предположим, у нас есть структура пакета, как это; q
Здесь вы можете увидеть под \ музыкой есть __init__.py
Отказ Если __All__
определяется ниже;
__all__ = ["admin", "apps", "models"]
Тогда только подмодулы зачислены в вышеуказанный список, будут импортированы во время A от музыкального импорта *
встречается.
Если __All__
не определен от музыкального импорта *
Заявление не будет импортировать все подмодулы из пакета. Утверждение от музыкального импорта *
только гарантирует, что музыкальный пакет был импортирован.
Заключение
Так что это в значительной степени все основные данные о пакете Python. Для получения дополнительной информации вы можете увидеть официальный Doc Python – https://docs.cython.org/3/tuTorial/modules.html#packages.
Так продолжай практиковать. # happy_coding 🙂.