все 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Сообщить о неточности