Каркасные объекты

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

C-структура объектов, используемая для описания объектов фрейма.

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

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

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

См. также Reflection.

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)
Возвращаемое значение: Новая ссылка.

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

Возвращает значение strong reference или NULL, если у кадра нет внешнего кадра.

Added in version 3.9.

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

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

Возвращает значение strong reference. Результат не может быть NULL.

Added in version 3.11.

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

Получите код кадра.

Возвращает strong reference.

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

Added in version 3.9.

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

Получает генератор, coroutine или async-генератор, которому принадлежит этот фрейм, или NULL, если этот фрейм не принадлежит генератору. Не вызывает исключения, даже если возвращаемое значение NULL.

Возвращает значение strong reference или NULL.

Added in version 3.11.

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

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

Возвращает значение strong reference. Результат не может быть NULL.

Added in version 3.11.

int PyFrame_GetLasti(PyFrameObject *frame)

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

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

Added in version 3.11.

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

Получить переменную имя из кадра.

  • В случае успеха верните значение переменной strong reference.

  • Вызывает NameError и возвращает NULL, если переменная не существует.

  • Вызывает исключение и возвращает NULL при ошибке.

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

Added in version 3.12.

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

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

Added in version 3.12.

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

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

Возвращает strong reference.

Added in version 3.11.

Изменено в версии 3.13: Как часть PEP 667, возвращает прокси-объект для оптимизированных диапазонов.

int PyFrame_GetLineNumber(PyFrameObject *frame)
Часть Стабильный ABI с версии 3.10.

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

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

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

struct _PyInterpreterFrame

Внутреннее представление фрейма интерпретатора.

Added in version 3.11.

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

Возвращает strong reference в объект кода для кадра.

Added in version 3.12.

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

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

Added in version 3.12.

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

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

Added in version 3.12.