Python Glossary English

все Python 3typesпонятие

types.FrameType

объекты интерпретатора

Тип кадра стека: выполняющийся вызов функции с его локальными переменными, текущей строкой и ссылкой на вызвавший кадр f_back.

Синтаксис

frame = inspect.currentframe()

Кадр получают через inspect.currentframe() или из traceback (tb.tb_frame). Ловушка — хранить его в переменной: кадр держит все локальные переменные и цепочку вызвавших, так что они не освобождаются, а ссылка из кадра на самого себя создаёт цикл, который убирает только сборщик мусора. Взяли кадр — удалите ссылку (del frame) в finally. Для логирования строки и имени функции хватает logging или traceback.

Примеры

import inspect
import types
def who_called():
    frame = inspect.currentframe()
    try:
        return frame.f_back.f_code.co_name
    finally:
        del frame
def report():
    return who_called()
print(report())  # → report
print(isinstance(inspect.currentframe(), types.FrameType))  # → True

См. также

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