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