Python packages
Предположим, вы разрабатываете большое приложение, которое включает в себя множество модулей. Очевидно, что складывать всё в одну папку не просто неудобно, а в некоторых случаях даже нерационально. Создадим для примера модуль
Модуль
В
Предположим, что у нас есть уже какие-то функции в
Точка указывает на то, что мы импортируем модули из этого же пакета, а не откуда-то еще. Если указать без точки или просто
Теперь в
Возможности пакетов и модулей в Python этим не ограничиваются, но для вступления и ознакомления этой информации должно хватить.
Предположим, вы разрабатываете большое приложение, которое включает в себя множество модулей. Очевидно, что складывать всё в одну папку не просто неудобно, а в некоторых случаях даже нерационально. Создадим для примера модуль
main.py
и рядом с ним пакет с модулями (папку с файлами) примерно в таком виде:├── main.py
└── package
├── __init__.py
├── module1.py
└── module2.py
Модуль
__init__.py
нужен для инициализации пакета, а также он вызывается при импорте пакета или модулей из него. Тем не менее, __init__.py
может был пустым, достаточно его присутствия. Простыми словами, такой модуль нужен для того, работать с папкой как с Python-пакетом.В
main.py
мы уже можем импортировать пакет и модули примерно такими способами:import package
from package import module1
import package.module2 as m2
Предположим, что у нас есть уже какие-то функции в
module1.py
и module2.py
. Теперь давайте напишем кое-что в __init__.py
для примера:from .module1 import function1
from . import module2 as m2
variable = 'hello from __init__.py'
Точка указывает на то, что мы импортируем модули из этого же пакета, а не откуда-то еще. Если указать без точки или просто
import module2
, то возникнет исключение.Теперь в
main.py
мы можем выполнить следующие команды:from package import function1
from package import m2
from package import variable
Возможности пакетов и модулей в Python этим не ограничиваются, но для вступления и ознакомления этой информации должно хватить.