HTML Diff
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