03. Создание собственных модулей
Создание собственных модулей
Описание: В этом уроке вы научитесь разбивать код на отдельные файлы, создавать собственные модули, использовать __init__.py и строить структуру реального Python-проекта. Это важный шаг к написанию крупных программ.1. Что такое модуль
Модуль — это любой Python-файл с расширением [.py].Например, файл math_utils.py:
# math_utils.pydef add(a, b):
return a + b
def multiply(a, b):
return a * b
Теперь вы можете использовать этот файл в другом Python-скрипте:
# main.pyimport math_utils
print(math_utils.add(2, 3)) # 5
print(math_utils.multiply(4, 5)) # 20
- Имя файла становится именем модуля.
- import подключает код и делает функции доступными.
2. Импорт отдельных элементов
Если вам нужно импортировать только одну функцию:
from math_utils import add
print(add(10, 20)) # 30
Можно переименовать при импорте:
from math_utils import multiply as m
print(m(2, 3)) # 6
Совет: избегайте from module import * — это загрязняет пространство имён и мешает понимать, откуда взялась функция.
3. Структура проекта
Когда проект растёт, его код нужно организовывать по папкам.
project/
│
├── main.py
├── utils/
│ ├── __init__.py
│ ├── math_utils.py
│ └── string_utils.py
Теперь можно импортировать так:
from utils.math_utils import add
from utils.string_utils import capitalize_text
4. Зачем нужен __init__.py
Файл __init__.py превращает папку в модуль (пакет). Без него Python не узнает, что это «пакет».
# utils/__init__.py
print('Модуль utils загружен!')
Теперь при импорте
import utils выполнится содержимое этого файла.5. Пример: мини-проект «инструменты разработчика»
Создадим структуру:
dev_tools/
│
├── __init__.py
├── math_ops.py
├── text_ops.py
└── main.py
math_ops.py
def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)
text_ops.py
def word_count(text):
return len(text.split())
main.py
from math_ops import factorial
from text_ops import word_countprint('Факториал 5 =', factorial(5))
print('Количество слов =', word_count('Python makes coding fun!'))
6. Импорт из родительской папки
Если у вас вложенные модули, можно использовать относительный импорт:
from .math_ops import factorial
Точка . означает «из текущего пакета», а .. — «на уровень выше».
7. Как Python ищет модули
При импорте Python ищет модуль в:- Текущей директории проекта.
- Системной переменной PYTHONPATH.
- Стандартной библиотеке Python.
Можно посмотреть пути поиска:
import sys
print(sys.path)
8. Установка собственных модулей как пакетов
Если вы хотите, чтобы ваш модуль можно было установить через pip, добавьте файл setup.py.
from setuptools import setup, find_packagessetup(
name='mytools',
version='1.0.0',
packages=find_packages(),
install_requires=[],
)
После этого можно установить ваш пакет локально:
pip install .
9. Практическое упражнение
Создайте пакет helpers со следующими файлами:- math_help.py — функции для вычислений (сумма, разность, среднее).
- string_help.py — функции для работы со строками.
- __init__.py — объединяет их и выводит приветствие при импорте.
Пример использования:
from helpers import math_help, string_helpprint(math_help.average([1,2,3,4,5]))
print(string_help.uppercase_words('python is cool'))
Итоги урока
Теперь вы умеете:- Создавать собственные модули и пакеты.
- Использовать __init__.py для управления импортами.
- Структурировать проекты по папкам.
- Готовить модули для установки через pip.