Операторы печати являются своего рода худшим из обоих миров , сочетающим в себе негативные аспекты онлайн-отладчика с диагностическими инструментами. Вам нужно изменить программу , но вы не получите больше полезного кода .
Онлайн-отладчик позволяет вам проверять состояние работающей программы; Но хорошая вещь в настоящем отладчике заключается в том, что вам не нужно изменять исходный код; ни до, ни после сеанса отладки; Вы просто загружаете программу в отладчик, сообщаете отладчику, где вы хотите посмотреть, и все готово.
Инструментирование приложения может потребовать некоторой предварительной работы, каким-либо образом изменяя исходный код, но результирующий диагностический вывод может иметь огромное количество деталей и может быть включен или выключен в очень определенной степени. Модуль регистрации Python может показывать не только зарегистрированное сообщение, но также файл и функцию, которая его вызывала, обратный вызов, если он был, реальное время отправки сообщения и т. Д. Больше чем это; диагностические приборы необходимо никогда удалять; Это так же правильно и полезно, когда программа закончена и находится в производстве, как это было в день, когда она была добавлена; но его вывод может быть застрял в файле журнала, где он вряд ли кого-нибудь раздражает, или уровень журнала может быть уменьшен, чтобы пропустить все, кроме самых срочных сообщений.
предвидеть необходимость или использование отладчика на самом деле не сложнее, чем использовать ipython во время тестирования, и ознакомиться с командами, которые он использует для управления встроенным отладчиком pdb.
Когда вы обнаружите, что думаете, что оператор print может быть проще, чем использование pdb (как это часто бывает), вы обнаружите, что использование logger значительно упрощает работу вашей программы над состоянием, чем если бы вы использовали и позже удалить выписки из печати.
Мой редактор сконфигурирован так, чтобы выделять операторы печати как синтаксические ошибки и регистрировать операторы как комментарии, поскольку именно так я их и рассматриваю.