Python Glossary English

Python 3.5+tracebackпонятие

traceback.StackSummary

кадры и стек

Список кадров FrameSummary, который возвращают extract_tb() и extract_stack(); метод format() превращает его в строки трассировки.

Синтаксис

traceback.StackSummary.extract(frame_gen, *, limit=None, lookup_lines=True, capture_locals=False)

Это подкласс list: срезы, len() и индексы работают как у списка. format() даёт те же строки, что и обычная трассировка, и сворачивает повторы: при глубокой рекурсии вместо тысячи одинаковых кадров будет строка «[Previous line repeated N more times]». StackSummary.extract(walk_tb(tb), capture_locals=True) сохраняет ещё и repr локальных переменных каждого кадра — удобно для отчёта об ошибке, но в лог так легко утекают пароли и токены.

Примеры

import traceback
def f(n):
    return f(n - 1) if n else 1 / 0
try:
    f(10)
except ZeroDivisionError as e:
    stack = traceback.extract_tb(e.__traceback__)
print(isinstance(stack, list), len(stack))  # → True 12
print(stack.format()[-1].strip())  # → [Previous line repeated 8 more times]

См. также

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