Найти тему
Властелин машин

Инструмент для удобной отладки кода

Природный дар, как музыкальный инструмент, звучит прекрасно лишь после настройки мастера.

Легким способом выявления внутренних неочевидных ошибок программы является использование инструкции assert. Она получает условие, при нарушении которого инициирует вызов исключения AssertionError. При этом вторым параметром опционально assert передается сообщение, которое появится на экране при возникновении исключения. Синтаксис такой:

assert условие, сообщение

Мой опыт работы с моделями машинного обучения свидетельствует об очень частой ошибке из-за разногласия дат. Допустим, программа настроена на запуск в текущем месяце для предсказания результатов на будущий период. Однако на практике при отладке кода данное условие рано или поздно нарушится (например, когда вы будете исследовать расчеты за прошлые периоды), и признаки для матрицы предсказаний будут еще не готовы (кстати, для этого текущий период я задаю параметром и меняю на прошлые значения, если надо). В этом случае у вас слетит прогноз и появится ошибка с непонятным описанием, и вы будете недоумевать, как вчера или на прошлой неделе все запускалось, а сегодня уже нет (однако сегодня - это следующий месяц или новый год). Если же снабдить код инструкцией assert вы поймете, в чем проблема:

Если месяц поменять на прошлый, то исключение не возникнет:

-2

Таким образом, assert является емким и удобным способом (в отличие от if/else) пометки мест, в которых могут возникнуть проблемы. Делайте это и быстрее находите ошибки в своем коде.

-3