Python Glossary English

все Python 3inspectфункция

inspect.currentframe()

стек и кадры

Возвращает объект кадра (frame) кода, который её вызвал: через него видны имя функции, номер строки, локальные переменные и вызывающий кадр.

Синтаксис

frame = inspect.currentframe()

Кадр держит ссылки на все локальные переменные, а переменная с кадром внутри этого же кадра — это цикл ссылок: память освободится лишь сборщиком мусора. Поэтому кадр удаляют в finally (del frame). Вызывающего ищут через f_back; на реализациях Python без поддержки кадров функция возвращает None. inspect.stack() даёт то же для всего стека, но медленно — читает исходники.

Примеры

import inspect
def caller_name():
    frame = inspect.currentframe()
    try:
        return frame.f_back.f_code.co_name
    finally:
        del frame
def work():
    return caller_name()
print(work())  # → work
import inspect
x = 10
frame = inspect.currentframe()
print(frame.f_code.co_name, frame.f_locals['x'], frame.f_lineno)  # → <module> 10 4
del frame

См. также

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