Python Glossary English

Python 3.5+tracebackфункция

traceback.walk_tb()

кадры и стек

Генератор пар (кадр, номер строки) по трассировке исключения через tb_next — от места перехвата к месту ошибки.

Синтаксис

for frame, lineno in traceback.walk_tb(tb): ...

Отдаёт живые кадры, поэтому через frame.f_locals видны значения переменных в момент ошибки — так устроены отчёты «со значениями переменных». Направление обратное walk_stack: от внешнего кадра к внутреннему, последний — место ошибки. Пока вы держите эти кадры (или само исключение), их переменные не освобождаются.

Примеры

import traceback
def div(a, b):
    return a / b
try:
    div(1, 0)
except ZeroDivisionError as e:
    *_, (frame, line) = traceback.walk_tb(e.__traceback__)
print(frame.f_code.co_name, dict(frame.f_locals))  # → div {'a': 1, 'b': 0}

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности