Модули в Python
Published: 20 March 2015
Система модулей позволяет вам логически организовать ваш код на Python. Группирование кода в модули значительно облегчает процесс написания и понимания программы. Говоря простым языком, модуль в Python это просто файл, содержащий код на Python. Каждый модуль в Python может содержать переменные, объявления классов и функций. Кроме того, в модуле может находиться исполняемый код.
Команда import в Python:
Вы можете использовать любой питоновский файл как модуль в другом файле, выполнив в нем команду import. Команда import в Python обладает следующим синтаксисом:
| import module_1[, module_2[,... module_N]
Когда интерпретатор Python встречает команду import, он импортирует (дает доступ) этот модуль, если он присутствует в пути поиска Python. Путь поиска Python это список директорий, в которых интерпретатор производит поиск перед попыткой загрузить модуль. Например, чтобы использовать модуль math следует написать:
| import math
| # Используем функцию sqrt из модуля math
| print (math.sqrt(9))
| # Печатаем значение переменной pi, определенной в math
| print (math.pi)
Важно знать, что модуль загружается лишь однажды, независимо от того, сколько раз он был импортирован. Это препятствует цикличному выполнению содержимого модуля.
Команда from ... import в Python
Команда from ... import позволяет вам импортировать не весь модуль целиком, а только определенное его содержимое. Например:
| # Импортируем из модуля math функцию sqrt
| from math import sqrt
| # Выводим результат выполнения функции sqrt.
| # Обратите внимание, что нам больше незачем указывать имя модуля
| print (sqrt(144))
|
| # Но мы уже не можем получить из модуля то, что не импортировали
| print (pi) # Выдаст ошибку
Выражение from ... import не импортирует весь модуль, а только предоставляет доступ к конкретным объектам, которые мы указали.
Команда from ... import * в Python:
В Python так же возможно импортировать всё (переменные, функции, классы) за раз из модуля, для этого используется конструкция from ... import *. Например:
| from math import *
| # Теперь у нас есть доступ ко всем функция и переменным, определенным в модуле math
|
| print (sqrt(121))
| print (pi)
| print (e)
Однако это конструкцию следует использовать с осторожностью, поскольку при импортировании нескольких модулей можно запутаться в своем собственном коде.
Местонахождение модулей в Python:
Когда вы импортируете модуль, интерпретатор Python ищет этот модуль в следующих местах:
1. Директория, в которой находится файл, в котором вызывается команда импорта
2. Если модуль не найден, Python ищет в каждой директории, определенной в консольной переменной PYTHONPATH.
3. Если и там модуль не найден, Python проверяет путь заданный по умолчанию
*
Путь поиска модулей сохранен в системном модуле sys в переменной path. Переменная sys.path содержит все три вышеописанных места поиска модулей.

Получение списка всех модулей Python установленных на компьютере:
Для того, чтобы получить список всех модулей, установленных на вашем компьютере достаточно выполнить команду:
| help("modules")
Через несколько секунд вы получите список всех доступных модулей.

Создание своего модуля в Python:
Чтобы создать свой модуль в Python достаточно сохранить ваш скрипт с расширением .py Теперь он доступен в любом другом файле. Например, создадим два файла: module_1.py и module_2.py и сохраним их в одной директории. В первом запишем:
| def hello():
| print ("Hello from module_1")
А во втором вызовем эту функцию:
| from module_1 import hello
|
| hello()
Выполнив код второго файла получим:
Hello from module_1
Функция dir():
Встроенная функция dir() возвращает отсортированный список строк, содержащих все имена, определенные в модуле.
| # на данный момент нам доступны лишь встроенные функции
| dir()
| # импортируем модуль math
| import math
| # теперь модуль math в списке доступных имен
| dir()
| # получим имена, определенные в модуле math
| dir(math)

Архитектура программы на Python:
Код на Python может быть организован следующим образом:
* Первый уровень это обычные команды на Python.
* Команды на Python могут быть собраны в функции.
* Функции могут быть частью класса.
* Классы могут быть определены внутри модулей.
* Наконец, модули могут составляться в пакеты модулей.
Пакеты модулей в Python:
Отдельные файлы-модули с кодом на Python могут объединяться в пакеты модулей. Пакет это директория (папка), содержащая несколько отдельных файлов-скриптов.
Например, имеем следующую структуру:
|_ my_file.py
|_ my_package
|_ __init__.py
|_ inside_file.py
В файле inside_file.py определена некая функция foo. Тогда чтобы получить доступ к функции foo, в файле my_file следует выполнить следующий код:
from my_package.inside_file import foo
Так же обратите внимание на наличие внутри директории my_package файла __init__.py. Это может быть пустой файл, который сообщает Python, что данная директория является пакетом модулей. В Python 3.3 и выше включать файл __init__.py в пакет модулей стало необязательно, однако, рекомендуется делать это ради поддержки обратной совместимости.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОК