Короткий ответ
Простейший способ — временно выводить значения через print(), для системной диагностики удобнее логирование модулем logging. Настоящий отладчик Python — модуль pdb: он даёт точки останова, пошаговое выполнение, просмотр стека и вычисление выражений. С Python 3.7 его запускает встроенная функция breakpoint().
Как это работает подробнее
Методы отладки отличаются глубиной: печать помогает быстро, но для сложных ошибок нужен полноценный интерактивный отладчик.
- Печать. Временный
print()значений переменных — самый простой способ быстрой проверки. - Логирование. Модуль
loggingзаписывает данные о работе программы и позволяет настраивать уровень и формат сообщений. - Отладчик pdb. Поддерживает условные точки останова и пошаговое выполнение по строкам исходного кода, просмотр кадров стека и вычисление произвольных выражений в контексте любого кадра.
- Запуск. Классический приём —
import pdb; pdb.set_trace(), современный — встроенная функцияbreakpoint(), после остановки выполнение продолжают командойcontinue. - Post-mortem. pdb поддерживает посмертную отладку и может вызываться под управлением программы.
Пример кода
Остановка программы в отладчике
def process(items):
breakpoint() # выполнение остановится здесь
return [x * 2 for x in items]
process([1, 2, 3])Что использовать на практике
- Быстрая проверка. Для простых случаев достаточно
print()в нужном месте кода. - Структурный подход. Подключай
logging, когда нужно следить за программой на разных уровнях и в разных местах. - Сложные ошибки. Для разбора падений используй
breakpoint()и интерактивныйpdb, в том числе внутри IDE и ноутбуков.
Подводные камни
- Забытые print. Временную печать легко оставить в коде — вычищай её перед коммитом.
- Точка останова в проде. Вызов
breakpoint()в боевом коде остановит выполнение программы. - Печать без контекста. Голые
printне дают уровней важности, поэтому при росте объёма их заменяют наlogging.
Как отвечать на собеседовании
- Перечисли уровни отладки:
print(),logging, интерактивный отладчик → опишиpdbи его возможности → покажи запуск черезbreakpoint()→ назови типовой порядок: от быстрой печати к логированию и пошаговой отладке.