Доброго времени суток, читатели, зрители моего канала programmer's notes.
Ссылки для вас
Приложение к видео
Команда import в Python. Модули и пакеты
Давайте начнём с вариантов использования команды import. Команда служит для подключения внешних модулей к программе. Но поскольку для большой программы логично разбиение её на модули, то нам никак не обойтись без этого инструмента.
Типичное использование команды
import modul1
modul1 может быть:
- Стандартной библиотекой, которая устанавливается при установке Python.
- Сторонний библиотекой, которая устанавливается при необходимости отдельно.
- Модуль запущенного приложения.
Рекомендуется импортировать в начале программного файла. Тогда будет производится в пространство файла. Но, теоретически, можно импортировать и в функции и внутри класса. Тогда и импорт осуществляется в соответствующее пространство. Не рекомендую вам это делать, особенно касаемо функций.
К элементам модуля можно, т.о. обращаться как modul1.a, modul1.f1() и т.д.
При импортировании можно указать псевдоним
import modul1 as m1
Тогда обращаться к импортируемым модулям можно через имя m1: m1.q, m1.f1() и т.д.
Рассмотрим следующий пример
Здесь модулем является mod1.py.
Результат выполнения main.py
10
10
200
200
Есть другой вариант импортирования.
from modul1 import a, f1
Из модуля modul1 импортируются два элемента a и f1. И тогда к a и f1 можно обращаться уже без префикса, т.е. просто a и f1. Однако, есть один важный момент. Изменение импортируемой данной способом переменной не изменит её в том модуле, в котором она была определена.
Несколько переделаем предыдущий пример, точнее изменим main.py.
Результат выполнения
10
10
200
10
Как и было ранее сказано, изменение переменной в модуле main.py не приведет к её изменению в mod1.py.
Обращаю внимание, что при запуске появился подкаталог __pycache__. При первом запуске туда помещается откомпилированная в байткод программа. При следующих запусках программы она выполняется уже быстрее, так как выполняется уже готовый байткод. Можно запретить создание байткода, если использовать опцию -B (для python3).
Рассмотрим более сложный случай, когда есть один главный модуль main.py и два дополнительных.
Программа выводит на консоль множители введённого числа
Пока не буду подробно останавливаться, где в принципе можно размещать модули вашей программы. Из представленного материала очевидно, что естественно располагать все модули в том же каталоге, где находится основная программа (у нас main.py).
Однако, если модулей много, то можно распределить их по подкаталогам. Такие подкаталоги с модулями называются пакетами.
Видоизменим предыдущий пример, так чтобы mod2.py и mod1.py располагались в подкатологе каталога, где располагается основной модуль main.py. Чтобы программа работала корректно видоизменим main.py и mod1.py.
Как видим, доступ к отдельным модулям осуществляется через пакет (каталог) prog. Обращаю внимание, что хоть mod1.py и находится в каталоге prog, доступ к модулю mod2.py осуществляется "с позиции" модуля main.py. Это и понятно, модуль загружается в пространство имён main.py. Запуск модуля main.py приводит к тому же результату, что в предыдущем примере.
Замечание
Конечно, мы изложили далеко не весь материал, касающийся команды import и вообще импортирования. Будем возвращаться к этим вопросам и далее.
Всего наилучшего. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.