0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Система модулей даёт возможность логически организовать код на Python. Кроме того, группирование в модули значительно облегчает сам процесс написания кода, плюс делает его более понятным. В этой статье поговорим, что такое модуль в Python, где он хранится и как обрабатывается.</p>
1
<p>Система модулей даёт возможность логически организовать код на Python. Кроме того, группирование в модули значительно облегчает сам процесс написания кода, плюс делает его более понятным. В этой статье поговорим, что такое модуль в Python, где он хранится и как обрабатывается.</p>
2
<p><strong>Модуль в Python</strong>- это файл, в котором содержится код на Python. Любой модуль в Python может включать в себя переменные, объявления функций и классов. Вдобавок ко всемe, в модуле может содержаться исполняемый код.</p>
2
<p><strong>Модуль в Python</strong>- это файл, в котором содержится код на Python. Любой модуль в Python может включать в себя переменные, объявления функций и классов. Вдобавок ко всемe, в модуле может содержаться исполняемый код.</p>
3
<h2>Команда import в Python</h2>
3
<h2>Команда import в Python</h2>
4
<p>Позволяет использовать любой файл Python в качестве модуля в другом файле. Синтаксис прост:</p>
4
<p>Позволяет использовать любой файл Python в качестве модуля в другом файле. Синтаксис прост:</p>
5
import module_1[, module_2[,... module_N]<p>Как только Python-интерпретатор встречает команду import, он выполняет импорт модуля, если он есть в пути поиска Python. Что касается пути поиска Python, то речь идёт о списке директорий, в которых интерпретатор выполняет поиск перед загрузкой модуля. Посмотрите на пример кода при использовании модуля math:</p>
5
import module_1[, module_2[,... module_N]<p>Как только Python-интерпретатор встречает команду import, он выполняет импорт модуля, если он есть в пути поиска Python. Что касается пути поиска Python, то речь идёт о списке директорий, в которых интерпретатор выполняет поиск перед загрузкой модуля. Посмотрите на пример кода при использовании модуля math:</p>
6
import math # Используем функцию sqrt из модуля math print (math.sqrt(9)) # Печатаем значение переменной pi, определенной в math print (math.pi)<p>Помните, что модуль загружается только один раз, вне зависимости от того, какое количество раз вы его импортировали. Таким образом исключается цикличное выполнение содержимого модуля.</p>
6
import math # Используем функцию sqrt из модуля math print (math.sqrt(9)) # Печатаем значение переменной pi, определенной в math print (math.pi)<p>Помните, что модуль загружается только один раз, вне зависимости от того, какое количество раз вы его импортировали. Таким образом исключается цикличное выполнение содержимого модуля.</p>
7
<h2>Команда from ... import</h2>
7
<h2>Команда from ... import</h2>
8
<p>Команда from ... import даёт возможность выполнить импорт не всего модуля целиком, а лишь конкретного его содержимого:</p>
8
<p>Команда from ... import даёт возможность выполнить импорт не всего модуля целиком, а лишь конкретного его содержимого:</p>
9
# Импортируем из модуля math функцию sqrt from math import sqrt # Выводим результат выполнения функции sqrt. # Нам больше незачем указывать имя модуля print (sqrt(144)) # Но мы уже не можем получить из модуля то, что не импортировали print (pi) # Выдаст ошибку<p>Обратите внимание, что выражение from ... import не импортирует модуль полностью, а лишь предоставляет доступ к объектам, указанным нами.</p>
9
# Импортируем из модуля math функцию sqrt from math import sqrt # Выводим результат выполнения функции sqrt. # Нам больше незачем указывать имя модуля print (sqrt(144)) # Но мы уже не можем получить из модуля то, что не импортировали print (pi) # Выдаст ошибку<p>Обратите внимание, что выражение from ... import не импортирует модуль полностью, а лишь предоставляет доступ к объектам, указанным нами.</p>
10
<h2>Команда from ... import *</h2>
10
<h2>Команда from ... import *</h2>
11
<p>Также в Python мы можем импортировать из модуля переменные, классы и функции за один раз. Чтобы это выполнить, применяется конструкция from ... import *:</p>
11
<p>Также в Python мы можем импортировать из модуля переменные, классы и функции за один раз. Чтобы это выполнить, применяется конструкция from ... import *:</p>
12
from math import * # Теперь у нас есть доступ ко всем функция и переменным, определенным в модуле math print (sqrt(121)) print (pi) print (e)<p>Использовать данную конструкцию нужно осторожно, ведь при импорте нескольких модулей можно запутаться в собственном коде.</p>
12
from math import * # Теперь у нас есть доступ ко всем функция и переменным, определенным в модуле math print (sqrt(121)) print (pi) print (e)<p>Использовать данную конструкцию нужно осторожно, ведь при импорте нескольких модулей можно запутаться в собственном коде.</p>
13
<h2>Так где хранятся модули в Python?</h2>
13
<h2>Так где хранятся модули в Python?</h2>
14
<p>При импорте модуля, интерпретатор Python пытается найти модуль в следующих местах: 1. Директория, где находится файл, в котором вызывается команда импорта. 2. Директория, определённая в консольной переменной PYTHONPATH (если модуль не найден с первого раза). 3. Путь, заданный по умолчанию (если модуль не найден в предыдущих двух случаях).</p>
14
<p>При импорте модуля, интерпретатор Python пытается найти модуль в следующих местах: 1. Директория, где находится файл, в котором вызывается команда импорта. 2. Директория, определённая в консольной переменной PYTHONPATH (если модуль не найден с первого раза). 3. Путь, заданный по умолчанию (если модуль не найден в предыдущих двух случаях).</p>
15
<p>Что касается пути поиска, то он сохраняется в переменной path в системном модуле sys. А переменная sys.path включает в себя все 3 вышеописанных места поиска.</p>
15
<p>Что касается пути поиска, то он сохраняется в переменной path в системном модуле sys. А переменная sys.path включает в себя все 3 вышеописанных места поиска.</p>
16
<h2>Получаем список всех модулей Python</h2>
16
<h2>Получаем список всех модулей Python</h2>
17
<p>Чтобы получить полный список модулей, установленных на ПК, используют команду help("modules").</p>
17
<p>Чтобы получить полный список модулей, установленных на ПК, используют команду help("modules").</p>
18
<h2>Создаём свой модуль в Python</h2>
18
<h2>Создаём свой модуль в Python</h2>
19
<p>Для создания собственного модуля в Python нужно сохранить ваш скрипт с расширением .py. После этого он станет доступным в любом другом файле. Давайте создадим 2 файла: module_1.py и module_2.py, а потом сохраним их в одной директории. В первом файле запишем:</p>
19
<p>Для создания собственного модуля в Python нужно сохранить ваш скрипт с расширением .py. После этого он станет доступным в любом другом файле. Давайте создадим 2 файла: module_1.py и module_2.py, а потом сохраним их в одной директории. В первом файле запишем:</p>
20
def hello(): print ("Hello from module_1")<p>А во втором вызовем функцию:</p>
20
def hello(): print ("Hello from module_1")<p>А во втором вызовем функцию:</p>
21
from module_1 import hello hello()<p>После выполнения кода 2-го файла получим:</p>
21
from module_1 import hello hello()<p>После выполнения кода 2-го файла получим:</p>
22
<h2>Функция dir() в Python</h2>
22
<h2>Функция dir() в Python</h2>
23
<p>Возвратит отсортированный список строк с содержанием всех имён, определенных в модуле.</p>
23
<p>Возвратит отсортированный список строк с содержанием всех имён, определенных в модуле.</p>
24
# на данный момент нам доступны лишь встроенные функции dir() # импортируем модуль math import math # теперь модуль math в списке доступных имен dir() # получим имена, определенные в модуле math dir(math)<h2>Пакеты модулей в Python</h2>
24
# на данный момент нам доступны лишь встроенные функции dir() # импортируем модуль math import math # теперь модуль math в списке доступных имен dir() # получим имена, определенные в модуле math dir(math)<h2>Пакеты модулей в Python</h2>
25
<p>Несколько файлов-модулей с кодом можно объединить в пакеты модулей. Пакет модулей - это директория, включающая в себя несколько отдельных файлов-скриптов.</p>
25
<p>Несколько файлов-модулей с кодом можно объединить в пакеты модулей. Пакет модулей - это директория, включающая в себя несколько отдельных файлов-скриптов.</p>
26
<p>Представьте, что у нас следующая структура:</p>
26
<p>Представьте, что у нас следующая структура:</p>
27
|_ my_file.py |_ my_package |_ __init__.py |_ inside_file.py<p>В файле inside_file.py определена некоторая функция foo. В итоге, дабы получить доступ к этой функции, в файле my_file нужно выполнить:</p>
27
|_ my_file.py |_ my_package |_ __init__.py |_ inside_file.py<p>В файле inside_file.py определена некоторая функция foo. В итоге, дабы получить доступ к этой функции, в файле my_file нужно выполнить:</p>
28
from my_package.inside_file import foo<p>Также нужно обратить внимание на то, есть ли внутри директории my_package файл<strong>init</strong>.py. Это может быть и пустой файл, сообщающий Python, что директория является пакетом модулей. В Python 3 включать файл<strong>init</strong>.py в пакет модулей уже не обязательно, но мы рекомендуем всё же делать это, чтобы обеспечить обратную совместимость.</p>
28
from my_package.inside_file import foo<p>Также нужно обратить внимание на то, есть ли внутри директории my_package файл<strong>init</strong>.py. Это может быть и пустой файл, сообщающий Python, что директория является пакетом модулей. В Python 3 включать файл<strong>init</strong>.py в пакет модулей уже не обязательно, но мы рекомендуем всё же делать это, чтобы обеспечить обратную совместимость.</p>
29
29