Разработчику на Python
k07. Файлы, JSON, CSV, YAML
k07
Телеметрию нужно сохранять. Конфигурацию соединения нужно читать с диска. Трек полёта нужно отдать в таблицу. На этом уроке вы научитесь записывать и читать текстовые файлы, освоите три распространённых формата данных — JSON, CSV и YAML — и познакомитесь с аккуратной записью файла через временный файл.
k08. Исключения, логирование, отладка
k08
На этом занятии вы научитесь перехватывать ожидаемые ошибки кода, создавать учебное исключение предметной области, вести журнал работы с помощью модуля logging и понимать, чем журнал отличается от вывода, который создаёт функция print.
k09. классы, dataclasses и Enum
k09
До сих пор телеметрию и точки маршрута вы часто описывали словарями и кортежами. Такой способ работает, но имена полей легко перепутать, а допустимые режимы полёта остаются «просто строками». На этом уроке вы научитесь собирать данные и поведение в типы: обычный класс с методами, dataclass для снимков состояния, Enum для ограниченного набора режимов и композицию объектов.
k10. Потоки, asyncio и очередь сообщений
k10
До сих пор учебные программы выполнялись в одном потоке управления: строка за строкой, без параллельной работы. В программах для БПЛА часто нужно одновременно принимать поток телеметрии и принимать решения, ставить команды в очередь и не блокировать весь процесс навечно, если сообщение задерживается. На этом уроке вы познакомитесь с тремя согласованными идеями: поток threading, очередь queue.
k11. Тесты pytest и заглушки
k11
До сих пор вы проверяли программы, запуская их и глядя на печать в консоли. Такой способ быстро перестаёт масштабироваться: после каждого изменения функции классификации напряжения или загрузки JSON приходится вручную вспоминать все крайние случаи. На этом уроке вы научитесь фиксировать ожидаемое поведение в виде автоматических тестов с помощью pytest, проверять исключения через pytest.raises и подменять обращение к диску с помощью unittest.mock.