Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
# Что такое модуль в Python?
Модуль — это файл с расширением .py, содержащий код Python (функции, классы, переменные, константы). Это базовый блок организации кода в Python.
Основная идея
my_project/
├── main.py # Файл-модуль
├── utils.py # Файл-модуль
└── helper.py # Файл-модуль
Каждый .py файл — это модуль, который можно импортировать и использовать в других файлах.
Простой пример
utils.py
# Функция в модуле
def greet(name):
return f"Hello, {name}!"
# Переменная в модуле
PI = 3.14159
# Класс в модуле
class Calculator:
def add(self, a, b):
return a + b
main.py
# Импортируем модуль
import utils
# Используем функцию из модуля
print(utils.greet('Alice')) # Hello, Alice!
# Используем переменную
print(utils.PI) # 3.14159
# Используем класс
calc = utils.Calculator()
print(calc.add(2, 3)) # 5
Способы импорта
1. Импорт всего модуля
import utils
utils.greet('Bob')
2. Импорт конкретного элемента
from utils import greet
greet('Bob') # Не нужно писать utils.
3. Импорт нескольких элементов
from utils import greet, PI, Calculator
print(greet('Alice'))
print(PI)
4. Импорт с переименованием
from utils import greet as say_hello
say_hello('Charlie')
import utils as u
print(u.greet('Diana'))
5. Импорт всех публичных элементов (*)
from utils import *
greet('Eve') # Работает
PI # Работает
Пакеты (Packages)
Пакет — это директория, содержащая модули и файл __init__.py:
my_package/
├── __init__.py # Делает папку пакетом
├── module1.py
├── module2.py
└── subpackage/
├── __init__.py
└── module3.py
Импорт из пакета
# Импорт модуля из пакета
from my_package import module1
# Импорт из подпакета
from my_package.subpackage import module3
# Импорт функции из модуля в пакете
from my_package.module1 import some_function
name и main
Каждый модуль имеет переменную __name__:
# utils.py
print(__name__) # 'utils'
def greet(name):
return f"Hello, {name}!"
# Код, который выполняется только если файл запущен напрямую
if __name__ == '__main__':
print(greet('World'))
Поведение
# Если запустить utils.py напрямую
python utils.py
# Выведет: utils
# Hello, World!
# Если импортировать в другой файл
python -c "import utils"
# Выведет только: utils
# (код в if __name__ == '__main__' не выполнится)
Встроенные модули (Built-in modules)
Python поставляется с встроенными модулями:
# math — математические функции
import math
print(math.sqrt(16)) # 4.0
# datetime — работа с датой и временем
from datetime import datetime
print(datetime.now())
# os — работа с операционной системой
import os
print(os.getcwd()) # Текущая директория
# json — работа с JSON
import json
data = json.dumps({'name': 'Alice'})
# sys — системные параметры
import sys
print(sys.version)
Путь поиска модулей (sys.path)
Python ищет модули в определённых местах:
import sys
print(sys.path) # Список путей поиска
# ['', '/usr/lib/python3.11', '/usr/local/lib/...', ...]
Порядок поиска
- Текущая директория
- PYTHONPATH (переменная окружения)
- Стандартная библиотека
- Директории site-packages (установленные пакеты)
Модули из стандартной библиотеки
# collections — специализированные структуры данных
from collections import Counter, defaultdict
# itertools — итераторы и комбинаторные функции
from itertools import combinations, permutations
# functools — функциональное программирование
from functools import reduce, lru_cache
# re — регулярные выражения
import re
# pathlib — работа с путями
from pathlib import Path
# typing — аннотации типов
from typing import List, Dict, Optional
Лучшие практики
1. Организуйте код логически
project/
├── main.py
├── models/
│ ├── __init__.py
│ ├── user.py
│ └── post.py
├── services/
│ ├── __init__.py
│ ├── auth_service.py
│ └── email_service.py
└── utils/
├── __init__.py
└── helpers.py
2. Используйте относительные импорты в пакетах
# services/auth_service.py
from ..models import user # Относительный импорт
3. Избегайте циклических импортов
# module_a.py
from module_b import some_function # Плохо!
# module_b.py
from module_a import another_function # Циклические зависимости
4. Явные импорты лучше, чем from module import *
# Плохо
from utils import *
# Хорошо
from utils import greet, Calculator
Проверка что может содержать модуль
import utils
# Показать все публичные (не начинаются с _) атрибуты модуля
print(dir(utils))
# Получить справку
help(utils.greet)
# Проверить тип
print(type(utils.PI)) # <class 'float'>
Заключение
Модуль в Python — это:
- Файл с расширением
.py - Контейнер для кода (функции, классы, переменные)
- Единица импорта и переиспользования
- Основной способ организации кода в проектах
Модули позволяют:
- Избежать дублирования кода (DRY)
- Организовать код логически
- Легко переиспользовать код в разных проектах
- Работать в команде (каждый — свой модуль)