Домой

Последняя активность

  

Пакеты в Python

PyDeKolt avatar PyDeKolt (0) [#] (27.05.2013 / 16:28)
Пакеты позволяют сгруппировать коллекцию модулей под общим именем пакета. Этот прием позволяет решить проблему конфликтов имен между именами модулей, используемых в различных приложениях.

По простому пакет - это каталог содержащий файл __init__.py, файлы модулей и другие подпакеты.

При первом импортировании пакета выполняется содержимое файла __init__.py, но этот файл может быть и вовсе пустым. Его наличие говорит интерпритатору что каталог нужно рассматривать как пакет модулей Python.

Импорт всех модулей пакета

При импортировании всех модулей пакета программист может столкнуться с проблемой.

Представим что у нас есть пакет Product в котором расположен подпакет Ice.

При импорте всех модулей пакета from Product.Ice import * на самом деле будут импортированы лишь модули перечисленные в переменной __all__ файла __init__.py нашего пакета.

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

Представим что у нас есть пакет модулей Product.Ice содержащий 2 модуля:

apple (Product.Ice.apple)
peach (Product.Ice.peach)
Модуль apple может импортировать модуль peach несколькими способами.

# apple.py
from Product.Ice import peach
# или
from . import peach # символ . ссылается на тот же каталог в котором находится вызывающий модуль
Если необходимо загрузить модуль из другого каталога того же пакета можно использовать импорт по относительному пути.

Представим что в пакете Product есть каталог Hot (Product.Hot)

И модулю Product.Hot.hotdog необходимо импортировать модуль Product.Ice.apple

# hotdog.py

# символы .. перемещают точку начала поиска на уровень выше в дереве каталогов
from .. Ice import apple

- Модули в Python
* Выучить Python
  Всего: 1

Зарегистрируйтесь и сможете комментировать все темы. Кнопочка вверху
Фильтр по автору
Скачать тему

В Форум

Новые вверху
waplog Рейтинг@Mail.ru
Statok.nettop-sid.ru
Яндекс.Метрика