frame.md
1> **Источник:** https://python-all.ru/3.12/c-api/frame.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Объекты фреймов89#### `type PyFrameObject`1011*Часть [Limited API](https://python-all.ru/3.12/c-api/stable.html#stable) (как непрозрачная структура).*1213C-структура объектов, используемая для описания объектов фреймов.1415В этой структуре нет открытых членов.1617Изменено в версии 3.11: Члены этой структуры были удалены из публичного C API. Подробнее см. в [статью «Что нового»](https://python-all.ru/3.12/whatsnew/3.11.html#pyframeobject-3-11-hiding) .1819Функции [`PyEval_GetFrame()`](https://python-all.ru/3.12/c-api/reflection.html#c.PyEval_GetFrame) и [`PyThreadState_GetFrame()`](https://python-all.ru/3.12/c-api/init.html#c.PyThreadState_GetFrame) можно использовать для получения объекта фрейма.2021См. также [Отражение](https://python-all.ru/3.12/c-api/reflection.html#reflection).2223#### `PyTypeObject PyFrame_Type`2425Тип объектов фреймов. Это тот же объект, что и [`types.FrameType`](https://python-all.ru/3.12/library/types.html#types.FrameType) на уровне Python.2627Изменено в версии 3.11: Ранее этот тип был доступен только после включения `<frameobject.h>`.2829#### `int PyFrame_Check(PyObject *obj)`3031Возвращает ненулевое значение, если *obj* является объектом фрейма.3233Изменено в версии 3.11: Ранее эта функция была доступна только после включения `<frameobject.h>`.3435#### `PyFrameObject *PyFrame_GetBack(PyFrameObject *frame)`3637Получает следующий внешний фрейм *frame*.3839Возвращает [сильную ссылку](https://python-all.ru/3.12/glossary.html#term-strong-reference) или `NULL`, если *frame* не имеет внешнего фрейма.4041Добавлено в версии 3.9.4243#### `PyObject *PyFrame_GetBuiltins(PyFrameObject *frame)`4445Получить атрибут [`f_builtins`](https://python-all.ru/3.12/reference/datamodel.html#frame.f_builtins) *фрейма*.4647Возвращает [сильную ссылку](https://python-all.ru/3.12/glossary.html#term-strong-reference). Результат не может быть `NULL`.4849Добавлено в версии 3.12.5051#### `PyCodeObject *PyFrame_GetCode(PyFrameObject *frame)`5253*Часть [Stable ABI](https://python-all.ru/3.12/c-api/stable.html#stable) начиная с версии 3.10.*5455Получает код *frame*.5657Возвращает [сильную ссылку](https://python-all.ru/3.12/glossary.html#term-strong-reference).5859Результат (код фрейма) не может быть `NULL`.6061Добавлено в версии 3.9.6263#### `PyObject *PyFrame_GetGenerator(PyFrameObject *frame)`6465Получает генератор, корутину или асинхронный генератор, которому принадлежит этот фрейм, или `NULL`, если фрейм не принадлежит генератору. Не вызывает исключения, даже если возвращаемое значение равно `NULL`.6667Возвращает [сильную ссылку](https://python-all.ru/3.12/glossary.html#term-strong-reference) или `NULL`.6869Добавлено в версии 3.12.7071#### `PyObject *PyFrame_GetGlobals(PyFrameObject *frame)`7273Получить атрибут [`f_globals`](https://python-all.ru/3.12/reference/datamodel.html#frame.f_globals) *фрейма*.7475Возвращает [сильную ссылку](https://python-all.ru/3.12/glossary.html#term-strong-reference). Результат не может быть `NULL`.7677Добавлено в версии 3.12.7879#### `int PyFrame_GetLasti(PyFrameObject *frame)`8081Получить атрибут [`f_lasti`](https://python-all.ru/3.12/reference/datamodel.html#frame.f_lasti) *фрейма*.8283Возвращает -1, если `frame.f_lasti` равно `None`.8485Добавлено в версии 3.12.8687#### `PyObject *PyFrame_GetVar(PyFrameObject *frame, PyObject *name)`8889Получить *имя* переменной из *фрейма*.9091- В случае успеха возвращает [сильную ссылку](https://python-all.ru/3.12/glossary.html#term-strong-reference) на значение переменной.92- Возбуждает [`NameError`](https://python-all.ru/3.12/library/exceptions.html#NameError) и возвращает `NULL`, если переменная не существует.93- При ошибке возбуждает исключение и возвращает `NULL`.9495Тип *имени* должен быть [`str`](https://python-all.ru/3.12/library/stdtypes.html#str).9697Добавлено в версии 3.12.9899#### `PyObject *PyFrame_GetVarString(PyFrameObject *frame, const char *name)`100101Аналогично [`PyFrame_GetVar()`](https://python-all.ru/3.12/c-api/frame.html#c.PyFrame_GetVar), но имя переменной – это C-строка в кодировке UTF-8.102103Добавлено в версии 3.12.104105#### `PyObject *PyFrame_GetLocals(PyFrameObject *frame)`106107Получает атрибут [`f_locals`](https://python-all.ru/3.12/reference/datamodel.html#frame.f_locals) *фрейма* ([`dict`](https://python-all.ru/3.12/library/stdtypes.html#dict)).108109Возвращает [сильную ссылку](https://python-all.ru/3.12/glossary.html#term-strong-reference).110111Добавлено в версии 3.12.112113#### `int PyFrame_GetLineNumber(PyFrameObject *frame)`114115*Часть [Stable ABI](https://python-all.ru/3.12/c-api/stable.html#stable) начиная с версии 3.10.*116117Возвращает номер строки, которую *фрейм* в данный момент выполняет.118119## Внутренние фреймы120121Если не используется [**PEP 523**](https://python-all.ru/3.12/c-api/frame.html), это не понадобится.122123#### `struct _PyInterpreterFrame`124125Внутреннее представление фрейма интерпретатора.126127Добавлено в версии 3.12.128129#### `PyObject *PyUnstable_InterpreterFrame_GetCode(struct _PyInterpreterFrame *frame);`130131> *Это [нестабильное API](https://python-all.ru/3.12/c-api/stable.html#unstable-c-api). Оно может меняться без предупреждения в минорных версиях.*132133> Возвращает [сильную ссылку](https://python-all.ru/3.12/glossary.html#term-strong-reference) на объект кода для фрейма.134135Добавлено в версии 3.12.136137#### `int PyUnstable_InterpreterFrame_GetLasti(struct _PyInterpreterFrame *frame);`138139> *Это [нестабильное API](https://python-all.ru/3.12/c-api/stable.html#unstable-c-api). Оно может меняться без предупреждения в минорных версиях.*140141Возвращает смещение в байтах последней выполненной инструкции.142143Добавлено в версии 3.12.144145#### `int PyUnstable_InterpreterFrame_GetLine(struct _PyInterpreterFrame *frame);`146147> *Это [нестабильное API](https://python-all.ru/3.12/c-api/stable.html#unstable-c-api). Оно может меняться без предупреждения в минорных версиях.*148149Возвращает номер текущей выполняемой строки или -1, если номер строки отсутствует.150151Добавлено в версии 3.12.152