Граница файла
Модуль — файл Python, который можно импортировать. Пустьstats.py содержит функцию подсчёта, а main.py читает ввод и вызывает её. Команда from stats import count_even делает имя функции доступным в main. При первом импорте выполняются инструкции верхнего уровня stats.py.
Чтобы демонстрационный запуск не сработал при импорте, поместите его под условие if __name__ == "__main__":. Когда файл запускается напрямую, условие истинно; при импорте — нет. Вычисляющие функции и определения остаются доступными в обоих случаях.
Пакет и зависимости
Для первого локального пакета создайте каталогstudy с __init__.py, stats.py и __main__.py. Команда python -m study запускает __main__.py. Импорт внутри пакета можно записать явно: from .stats import count_even. Сохраните команды запуска в README, чтобы они не зависели от случайно выбранной папки.
Внешние зависимости устанавливайте в отдельное окружение и фиксируйте в конфигурации проекта. Импорт стандартных json и csv не требует установки через pip. Не называйте свой файл json.py или random.py: он может затенить одноимённый модуль стандартной библиотеки.
Проверка структуры
Импорт stats не должен читать stdin, создавать отчёт или отправлять запрос. Это делает тесты безопасными и воспроизводимыми. На первом этапе достаточно двух файлов: не добавляйте слои и пакеты без ясной ответственности.В примере определения можно импортировать без побочного вывода. При прямом запуске вызывается main и выводится результат.