все Python 3inspectфункция
inspect.getouterframes()
стек и кадры
Список FrameInfo для кадра frame и всех кадров снаружи него — то же, что stack(), но начиная с заданного кадра.
Синтаксис
inspect.getouterframes(frame, context=1) -> list[FrameInfo]
Принимает объект кадра, а не FrameInfo и не функцию: передайте inspect.currentframe() или fi.frame, иначе получите AttributeError. Удобно начать с вызывающего — getouterframes(inspect.currentframe().f_back) — и не тащить в отчёт собственную функцию. Цена и утечки те же, что у stack(): context=1 читает исходники каждого кадра, а сохранённый список держит кадры живыми.
Примеры
import inspect
def log_callers():
frame = inspect.currentframe().f_back # начать с вызывающего
try:
return [fi.function for fi in inspect.getouterframes(frame, 0)]
finally:
del frame
def handler():
return log_callers()
print(handler()) # → ['handler', '<module>']
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности