← Назад к вопросам

Что такое модуль в Python?

1.3 Junior🔥 71 комментариев
#Python Core

Комментарии (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/...', ...]

Порядок поиска

  1. Текущая директория
  2. PYTHONPATH (переменная окружения)
  3. Стандартная библиотека
  4. Директории 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)
  • Организовать код логически
  • Легко переиспользовать код в разных проектах
  • Работать в команде (каждый — свой модуль)
Что такое модуль в Python? | PrepBro