Документация Python неофициальный перевод
Содержание страницы

Объекты фреймовFrame Objects

type PyFrameObject
Часть Limited API (как непрозрачная структура).

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

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

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

Функции 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 фрейма.

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

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

PyCodeObject *PyFrame_GetCode(PyFrameObject *frame)
Часть Stable ABI начиная с версии 3.10.

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

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

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

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

PyObject *PyFrame_GetGenerator(PyFrameObject *frame)

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

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

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

PyObject *PyFrame_GetGlobals(PyFrameObject *frame)

Получить атрибут f_globals фрейма.

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

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

int PyFrame_GetLasti(PyFrameObject *frame)

Получить атрибут f_lasti фрейма.

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

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

PyObject *PyFrame_GetVar(PyFrameObject *frame, PyObject *name)

Получить имя переменной из фрейма.

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

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

  • При ошибке возбуждает исключение и возвращает NULL.

Тип имени должен быть 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 фрейма (dict).

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

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

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

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

Внутренние фреймыInternal Frames

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

struct _PyInterpreterFrame

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

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

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.