РАЗБИРАЕМ ПО ШАГАМ
От идеи к работающему коду
Когда проект растёт, код разделяют по файлам. Разберём собственные модули, точку входа, окружение и инструкцию запуска. Этот урок выполняем в редакторе и терминале компьютера.
Сразу к запуску примера ↓
- 1Модули и данные
- 2Точка входа
- 3Окружение и запуск
1. Модуль — Python-файл
Файл helpers.py становится модулем helpers. Его функции можно импортировать из другого файла в той же папке. Не называй свои файлы random.py или json.py: они могут перекрыть стандартную библиотеку.
Создай helpers.py с кодом ниже. В main.py напиши from helpers import greet и print(greet("Анна")). Оба файла должны быть сохранены. Встроенный одностраничный редактор сайта не создаёт многомодульный локальный проект.
def greet(name): return f"Привет, {name}!"2. Точка входа и повторное использование
Код верхнего уровня модуля выполняется при первом импорте. Чтобы импорт вычислительной функции не запускал диалог, выделяем main и проверяем __name__.
Когда файл запускают напрямую, __name__ равен "__main__". При импорте он получает имя модуля, поэтому диалог внутри защищённого блока не запускается. Следующий фрагмент — содержимое main.py рядом с helpers.py.
from helpers import greetdef main(): name = input("Имя: ") print(greet(name))if __name__ == "__main__": main()3. Стандартная библиотека и venv
json, random, pathlib и argparse входят в стандартную библиотеку Python. Их не нужно устанавливать через pip. Внешние зависимости проекта изолируем в виртуальном окружении .venv.
В терминале macOS создай его командой python3 -m venv .venv, активируй source .venv/bin/activate. В Windows: py -m venv .venv, затем .venv\Scripts\activate.bat в cmd. После активации python -m pip --version показывает pip выбранного окружения. Пакеты устанавливай только если они нужны проекту. Папку .venv исключи из Git через .gitignore.
4. Аргументы запуска и README
argparse разбирает параметры командной строки. Это другой источник данных, чем input: значения передаются при запуске. Сохрани пример в cli.py и запусти в терминале python cli.py --name Анна.
В README перечисли версию Python, файлы, создание окружения при необходимости и точную команду запуска. Проверь инструкцию из новой папки: отсутствие скрытых ручных действий делает проект воспроизводимым.
import argparsedef main(): parser = argparse.ArgumentParser() parser.add_argument("--name", default="Барсик") args = parser.parse_args() print(f"Привет, {args.name}!")if __name__ == "__main__": main()Где легко ошибиться
- Назвать свой модуль как стандартный и сломать импорт.
- Запускать input во время импорта вспомогательного модуля.
- Добавить .venv в репозиторий или забыть команду запуска.
Проверь понимание: Зачем нужен if __name__ == "__main__"?
Он запускает main только при прямом запуске файла, позволяя импортировать функции без запуска диалога.
