Python 3.5+inspectпонятие
inspect.FrameInfo
стек и кадры
Запись о кадре стека, которую возвращают inspect.stack(), trace(), getouterframes() и getinnerframes(): кадр, файл, строка, функция, контекст.
Синтаксис
for info in inspect.stack(): info.function, info.lineno, info.filename
Поле frame держит живой кадр со всеми его переменными: сохранённый список FrameInfo не даёт памяти освободиться, его удаляют после использования. Обращение по индексу (info[3]) работает ради совместимости со старым кортежем, но считается устаревшим — пишите info.function. Типичная задача — узнать вызывающего: inspect.stack()[1]; это дорого, потому что stack() читает исходник для каждого кадра.
Примеры
import inspect
def who_called_me():
return inspect.stack()[1].function
def main():
return who_called_me()
print(main()) # → main
import inspect
info = inspect.stack()[0]
print(type(info).__name__, info.function, info.lineno) # → FrameInfo <module> 2
print(len(info), info[3] == info.function) # → 6 True
del info
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности