- Более точные сообщения об ошибках (
python 3.10-3.11) — трейсбеки стали заметно информативнее: точно указывают, какой атрибут/индекс привёл к ошибке (включая выражения в несколько строк), аNameError/AttributeErrorподсказывают опечатки ("Did you mean...?"). - Улучшенный REPL (
python 3.13+) — многострочное редактирование, подсветка синтаксиса прямо "из коробки" (написан на чистом python, аналогPyPy-шного REPL). - Цветной вывод traceback'ов по умолчанию (
python 3.13+) — можно отключить черезPYTHON_COLORS=0/NO_COLOR.
Коротко. Встроенная функция breakpoint() — с Python 3.7 вместо
import pdb; pdb.set_trace().
def calc(data):
total = sum(data)
breakpoint() # здесь выполнение остановится, откроется pdb
return total / len(data)Полезные команды pdb: n — следующая строка, s — зайти внутрь вызова,
c — продолжить, l — показать код вокруг, p выражение — напечатать,
w — стек вызовов, q — выход.
Подвох. breakpoint() уважает переменную окружения PYTHONBREAKPOINT.
PYTHONBREAKPOINT=0 отключает все точки останова, не трогая код, — удобно,
чтобы забытый breakpoint() не подвесил прод. Туда же можно подставить другой
отладчик: PYTHONBREAKPOINT=ipdb.set_trace.
Дальше — черновые темы для доработки: topics/.