Найти в Дзене

Стандартные библиотеки в Python. Команда import. Приложение к видео 1

Доброго времени суток, читатели, зрители моего канала programmer's notes.

Ссылки для вас

Стандартные библиотеки Python | programmer's notes | Дзен
programmer's notes

Приложение к видео

Команда import в Python. Модули и пакеты

Давайте начнём с вариантов использования команды import. Команда служит для подключения внешних модулей к программе. Но поскольку для большой программы логично разбиение её на модули, то нам никак не обойтись без этого инструмента.

Типичное использование команды

import modul1

modul1 может быть:

  1. Стандартной библиотекой, которая устанавливается при установке Python.
  2. Сторонний библиотекой, которая устанавливается при необходимости отдельно.
  3. Модуль запущенного приложения.

Рекомендуется импортировать в начале программного файла. Тогда будет производится в пространство файла. Но, теоретически, можно импортировать и в функции и внутри класса. Тогда и импорт осуществляется в соответствующее пространство. Не рекомендую вам это делать, особенно касаемо функций.

К элементам модуля можно, т.о. обращаться как modul1.a, modul1.f1() и т.д.

При импортировании можно указать псевдоним

import modul1 as m1

Тогда обращаться к импортируемым модулям можно через имя m1: m1.q, m1.f1() и т.д.

Рассмотрим следующий пример

main.py
main.py
mod1.py
mod1.py

Здесь модулем является mod1.py.

Результат выполнения main.py

10
10
200
200

Есть другой вариант импортирования.

from modul1 import a, f1

Из модуля modul1 импортируются два элемента a и f1. И тогда к a и f1 можно обращаться уже без префикса, т.е. просто a и f1. Однако, есть один важный момент. Изменение импортируемой данной способом переменной не изменит её в том модуле, в котором она была определена.

Несколько переделаем предыдущий пример, точнее изменим main.py.

main.py
main.py

Результат выполнения

10
10
200
10

Как и было ранее сказано, изменение переменной в модуле main.py не приведет к её изменению в mod1.py.

Обращаю внимание, что при запуске появился подкаталог __pycache__. При первом запуске туда помещается откомпилированная в байткод программа. При следующих запусках программы она выполняется уже быстрее, так как выполняется уже готовый байткод. Можно запретить создание байткода, если использовать опцию -B (для python3).

Рассмотрим более сложный случай, когда есть один главный модуль main.py и два дополнительных.

main.py
main.py
mod1.py
mod1.py
mod2.py
mod2.py

Программа выводит на консоль множители введённого числа

Пока не буду подробно останавливаться, где в принципе можно размещать модули вашей программы. Из представленного материала очевидно, что естественно располагать все модули в том же каталоге, где находится основная программа (у нас main.py).

Однако, если модулей много, то можно распределить их по подкаталогам. Такие подкаталоги с модулями называются пакетами.

Видоизменим предыдущий пример, так чтобы mod2.py и mod1.py располагались в подкатологе каталога, где располагается основной модуль main.py. Чтобы программа работала корректно видоизменим main.py и mod1.py.

main.py
main.py
mod1.py
mod1.py

Как видим, доступ к отдельным модулям осуществляется через пакет (каталог) prog. Обращаю внимание, что хоть mod1.py и находится в каталоге prog, доступ к модулю mod2.py осуществляется "с позиции" модуля main.py. Это и понятно, модуль загружается в пространство имён main.py. Запуск модуля main.py приводит к тому же результату, что в предыдущем примере.

Замечание
Конечно, мы изложили далеко не весь материал, касающийся команды import и вообще импортирования. Будем возвращаться к этим вопросам и далее.

Всего наилучшего. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

Программирование это искусство, забудьте то, чему вас учили и получайте удовольствие
Программирование это искусство, забудьте то, чему вас учили и получайте удовольствие