Python Glossary English

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