Что важно знать
venv,pip, lock-файлы; современные менеджеры — uv, poetry.- ruff — линтер и форматтер.
- pytest: фикстуры, параметризация,
monkeypatch,pytest-asyncio.
Виртуальные окружения, зависимости, uv и poetry, ruff, pytest.
venv, pip, lock-файлы; современные менеджеры — uv, poetry.monkeypatch, pytest-asyncio.Практика. Покрыть учебный проект тестами pytest с фикстурами и отчётом покрытия.
Практика. Настроить проект на uv с ruff, mypy и pytest в CI.
Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.
Код под if __name__ == "__main__": выполняется, только когда файл запущен как скрипт, а не импортирован.
Полный разборПри первом import модуль ищется по sys.path, выполняется сверху вниз один раз и кладётся в sys.modules; повторные импорты берут его оттуда. Циклический импорт ломается, когда модуль A ещё не дошёл до нужного имени, а B уже пытается его взять — ImportError…
Полный разборАннотации — подсказки о типах для людей и инструментов; интерпретатор их не проверяет.
Полный разборpatch временно заменяет атрибут по имени на Mock. Подменять нужно в модуле, где имя ищется, а не там, где оно определено: если orders.py сделал from payments import charge, патчить orders.charge, а не payments.charge.
Полный разборВиртуальное окружение — отдельная копия Python со своими пакетами для каждого проекта.
Полный разборФикстура — функция с @pytest.fixture, результат которой pytest передаёт в тест по имени параметра. Код после yield — очистка. scope (function, class, module, package, session) задаёт, как часто фикстура создаётся заново. Общие фикстуры живут в conftest.py и…
Полный разборТест — функция с именем test_… в файле test_.py, проверки — обычный assert: pytest показывает, какие значения не совпали. Запуск — команда pytest (или pytest путь::имя_теста). Один тест на много входов — @pytest.mark.parametrize. Ожидаемое исключение — with…
Полный разборmypy и pyright — статические анализаторы: читают код и аннотации без запуска и находят несоответствия типов (передали str вместо int, забыли проверить None, вызвали несуществующий метод). Ставят как зависимость разработки, настраивают в pyproject.toml и…
Полный разборВиртуальные окружения и зависимости, как работает импорт и чем опасны циклические импорты, __name__ == "__main__", pytest, фикстуры и mock.patch.
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.