Зачем нужны модули?
Модуль в Python — это просто файл с расширением .py, содержащий функции, классы и переменные. Вместо того чтобы писать весь код в одном файле, программисты разбивают программу на модули. Это делает код:
- Переиспользуемым — один модуль можно подключить в разных программах
- Структурированным — каждый модуль отвечает за свою часть логики
- Поддерживаемым — легче находить и исправлять ошибки
Python поставляется с огромной стандартной библиотекой — сотнями готовых модулей для работы с математикой, датами, файлами, сетью и многим другим.
import — подключение модуля целиком
Самый простой способ — импортировать весь модуль. После этого ко всем его функциям нужно обращаться через префикс имя_модуля.:
import math
print(math.sqrt(16)) # 4.0
print(math.pi) # 3.141592653589793
print(math.factorial(5)) # 120
⚠️ Важно: Правило:
import moduleзагружает модуль и создаёт пространство имён. Обращаться к содержимому нужно через точку:module.function().
Это самый безопасный способ: вы всегда видите, из какого модуля взята функция, и избегаете конфликтов имён.
from...import — импорт конкретных имён
Если вам нужна только одна функция или переменная, можно импортировать её напрямую. Тогда не нужно писать префикс модуля:
from math import sqrt, pi
print(sqrt(25)) # 5.0
print(pi) # 3.141592653589793
Можно импортировать сразу всё содержимое модуля через *:
from math import *
print(sin(0)) # 0.0
print(cos(0)) # 1.0
print(e) # 2.718281828459045
⚠️ Важно: Осторожно!
from module import *засоряет пространство имён. Вы можете случайно переопределить встроенную функцию или переменную. В production-коде так делать не рекомендуется.
as — псевдонимы модулей
Если имя модуля длинное, или вы хотите избежать конфликта имён, используйте as:
import numpy as np
import matplotlib.pyplot as plt
import itertools as it
arr = np.array([1, 2, 3])
print(arr) # [1 2 3]
for combo in it.product('AB', repeat=2):
print(combo)
Общепринятые сокращения:
| Модуль | Псевдоним | Назначение |
|---|---|---|
| numpy | np | Научные вычисления |
| pandas | pd | Анализ данных |
| matplotlib.pyplot | plt | Графики |
| itertools | it | Комбинаторика |
Обзор стандартной библиотеки
Python поставляется с богатым набором модулей «из коробки». Вот самые полезные:
| Модуль | Назначение | Пример использования |
|---|---|---|
math | Математические функции | sqrt, sin, cos, log, pi, e |
random | Генерация случайных чисел | randint, choice, shuffle, random |
datetime | Дата и время | now(), timedelta, strftime |
os | Операционная система | Работа с путями, переменные окружения |
sys | Системные функции | argv, exit, path |
json | Работа с JSON | loads, dumps, load, dump |
re | Регулярные выражения | search, findall, sub |
collections | Дополнительные структуры данных | Counter, defaultdict, deque |
pathlib | Современная работа с путями | Path('.').glob('*.py') |
time | Время и задержки | sleep, time_ns |
Создание собственного модуля
Любой .py-файл может быть модулем. Создадим файл utils.py:
# utils.py
def greet(name):
"""Приветствие."""
return f"Привет, {name}!"
def add(a, b):
"""Сложение двух чисел."""
return a + b
PI = 3.14159
Теперь используем его в другом файле (в той же папке):
# main.py
import utils
print(utils.greet("Мир")) # Привет, Мир!
print(utils.add(3, 5)) # 8
print(utils.PI) # 3.14159
⚠️ Важно: при импорте Python выполняет весь код модуля. Чтобы защитить исполняемый код от запуска при импорте, используйте конструкцию
if __name__ == '__main__':.
# utils.py с защитой от запуска при импорте
def greet(name):
return f"Привет, {name}!"
if __name__ == '__main__':
# Этот код выполнится только при прямом запуске utils.py
print(greet("Тест"))
Итоги
import module— импорт всего модуля (безопасно, ясно)from module import name— импорт конкретной функции/переменнойfrom module import *— импорт всего (не рекомендуется)import module as alias— короткий псевдоним- Стандартная библиотека Python содержит сотни готовых модулей
- Свой модуль — это просто
.py-файл в той же папке (или в PYTHONPATH) if __name__ == '__main__':защищает код от выполнения при импорте