Python 3.5+tracebackпонятие
traceback.FrameSummary
кадры и стек
Один кадр трассировки: файл, номер строки, имя функции и текст строки — снимок без ссылки на живой кадр и его переменные.
Синтаксис
traceback.FrameSummary(filename, lineno, name, *, lookup_line=True, locals=None, line=None)
Его элементы составляют StackSummary из extract_tb() и extract_stack(). В отличие от объекта frame он не держит локальные переменные, поэтому список FrameSummary можно хранить и передавать, не удерживая в памяти всё, что было в функциях. Объект распаковывается как кортеж из четырёх полей (filename, lineno, name, line) — так работает старый код, где extract_tb возвращал кортежи. Текст line читается из файла лениво, через linecache: если файл успели изменить, строка будет уже новой.
Примеры
import traceback
def boom():
return 1 / 0
try:
boom()
except ZeroDivisionError as e:
fs = traceback.extract_tb(e.__traceback__)[-1]
print(fs.name, fs.lineno, fs.line) # → boom 3 return 1 / 0
filename, lineno, name, line = fs
print(name == fs.name) # → True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности