Spec-Zone.ru › Python 3.13

Объекты кадров

type PyFrameObject
Часть ограниченного API (в виде непрозрачной структуры).

Структура C объектов, используемых для описания объектов кадров.

В этой структуре нет общедоступных членов.

Изменено в версии 3.11: Члены этой структуры были удалены из общедоступного API C. Подробности см. в разделе «Что нового».

Для получения объекта кадра можно использовать функции PyEval_GetFrame() и PyThreadState_GetFrame().

См. также Рефлексия.

PyTypeObject PyFrame_Type

Тип объектов кадров. Это тот же объект, что и types.FrameType на уровне Python.

Изменено в версии 3.11: Ранее этот тип был доступен только после включения <frameobject.h>.

int PyFrame_Check(PyObject *obj)

Возвращает ненулевое значение, если obj является объектом кадра.

Изменено в версии 3.11: Ранее эта функция была доступна только после включения <frameobject.h>.

PyFrameObject *PyFrame_GetBack(PyFrameObject *frame)
Возвращаемое значение: новая ссылка.

Получает следующий внешний кадр для frame.

Возвращает сильную ссылку или NULL, если у frame нет внешнего кадра.

Добавлено в версии 3.9.

PyObject *PyFrame_GetBuiltins(PyFrameObject *frame)
Возвращаемое значение: новая ссылка.

Получает атрибут f_builtins объекта frame.

Возвращает сильную ссылку. Результат не может быть NULL.

Добавлено в версии 3.11.

PyCodeObject *PyFrame_GetCode(PyFrameObject *frame)
Возвращаемое значение: новая ссылка. Часть стабильного ABI начиная с версии 3.10.

Получает код объекта frame.

Возвращает сильную ссылку.

Результат (код кадра) не может быть NULL.

Добавлено в версии 3.9.

PyObject *PyFrame_GetGenerator(PyFrameObject *frame)
Возвращаемое значение: новая ссылка.

Получает генератор, сопрограмму или асинхронный генератор, которому принадлежит этот кадр, либо NULL, если этот кадр не принадлежит генератору. Не вызывает исключение, даже если возвращаемое значение — NULL.

Возвращает сильную ссылку либо NULL.

Добавлено в версии 3.11.

PyObject *PyFrame_GetGlobals(PyFrameObject *frame)
Возвращаемое значение: новая ссылка.

Получает атрибут f_globals объекта frame.

Возвращает сильную ссылку. Результат не может быть NULL.

Добавлено в версии 3.11.

int PyFrame_GetLasti(PyFrameObject *frame)

Получает атрибут f_lasti объекта frame.

Возвращает -1, если frame.f_lasti равен None.

Добавлено в версии 3.11.

PyObject *PyFrame_GetVar(PyFrameObject *frame, PyObject *name)
Возвращаемое значение: новая ссылка.

Получает переменную с именем name из frame.

  • В случае успеха возвращает сильную ссылку на значение переменной.
  • Вызывает NameError и возвращает NULL, если переменная не существует.
  • В случае ошибки вызывает исключение и возвращает NULL.

Тип name должен быть str.

Добавлено в версии 3.12.

PyObject *PyFrame_GetVarString(PyFrameObject *frame, const char *name)
Возвращаемое значение: новая ссылка.

Аналогична PyFrame_GetVar(), но имя переменной представляет собой строку C в кодировке UTF-8.

Добавлено в версии 3.12.

PyObject *PyFrame_GetLocals(PyFrameObject *frame)
Возвращаемое значение: новая ссылка.

Получает атрибут f_locals объекта frame. Если кадр относится к оптимизированной области видимости, возвращается прокси-объект, передающий изменения и позволяющий изменять локальные переменные. Во всех остальных случаях (классы, модули, exec(), eval()) напрямую возвращается отображение, представляющее локальные переменные кадра (как описано для locals()).

Возвращает сильную ссылку.

Добавлено в версии 3.11.

Изменено в версии 3.13: В соответствии с PEP 667 возвращает экземпляр PyFrameLocalsProxy_Type.

int PyFrame_GetLineNumber(PyFrameObject *frame)
Часть стабильного ABI начиная с версии 3.10.

Возвращает номер строки, выполняемой в данный момент в frame.

Прокси локальных переменных кадра

Добавлено в версии 3.13.

Атрибут f_locals объекта кадра является экземпляром «прокси локальных переменных кадра». Прокси-объект предоставляет представление базового словаря локальных переменных кадра, передающее изменения. Это гарантирует, что переменные, предоставляемые f_locals, всегда соответствуют текущим локальным переменным самого кадра.

Дополнительные сведения см. в PEP 667.

PyTypeObject PyFrameLocalsProxy_Type

Тип прокси-объектов locals() кадра.

int PyFrameLocalsProxy_Check(PyObject *obj)

Возвращает ненулевое значение, если obj является прокси-объектом locals() кадра.

Внутренние кадры

Если вы не используете PEP 523, это вам не понадобится.

struct _PyInterpreterFrame

Внутреннее представление кадра интерпретатора.

Добавлено в версии 3.11.

PyObject *PyUnstable_InterpreterFrame_GetCode(struct _PyInterpreterFrame *frame);
Это нестабильный API. Он может измениться без предупреждения в минорных выпусках.

Возвращает сильную ссылку на объект кода кадра.

Добавлено в версии 3.12.

int PyUnstable_InterpreterFrame_GetLasti(struct _PyInterpreterFrame *frame);
Это нестабильный API. Он может измениться без предупреждения в минорных выпусках.

Возвращает смещение в байтах относительно последней выполненной инструкции.

Добавлено в версии 3.12.

int PyUnstable_InterpreterFrame_GetLine(struct _PyInterpreterFrame *frame);
Это нестабильный API. Он может измениться без предупреждения в минорных выпусках.

Возвращает номер выполняемой в данный момент строки или -1, если номер строки отсутствует.

Добавлено в версии 3.12.

© 2001–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/c-api/frame.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API