Spec-Zone.ru › Python 3.12

Объекты переменных контекста

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

Изменено в версии 3.7.1:

Примечание

В Python 3.7.1 сигнатуры всех C-API переменных контекста были изменены на использование указателей PyObject вместо PyContext, PyContextVar и PyContextToken, например:

// in 3.7.0:
PyContext *PyContext_New(void);

// in 3.7.1+:
PyObject *PyContext_New(void);

См. bpo-34762 для получения более подробной информации.

В этом разделе подробно описан общедоступный C API для модуля contextvars.

type PyContext

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

type PyContextVar

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

type PyContextToken

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

PyTypeObject PyContext_Type

Объект типа, представляющий тип контекста.

PyTypeObject PyContextVar_Type

Объект типа, представляющий тип переменной контекста.

PyTypeObject PyContextToken_Type

Объект типа, представляющий тип токена переменной контекста.

Макросы проверки типов:

int PyContext_CheckExact(PyObject *o)

Возвращает true, если o имеет тип PyContext_Type. o не должен быть NULL. Эта функция всегда выполняется успешно.

int PyContextVar_CheckExact(PyObject *o)

Возвращает true, если o имеет тип PyContextVar_Type. o не должен быть NULL. Эта функция всегда выполняется успешно.

int PyContextToken_CheckExact(PyObject *o)

Возвращает true, если o имеет тип PyContextToken_Type. o не должен быть NULL. Эта функция всегда выполняется успешно.

Функции управления объектами контекста:

PyObject *PyContext_New(void)
Значение возврата: Новая ссылка.

Создаёт новый пустой объект контекста. Возвращает NULL в случае ошибки.

PyObject *PyContext_Copy(PyObject *ctx)
Значение возврата: Новая ссылка.

Создаёт поверхностную копию объекта контекста ctx. Возвращает NULL в случае ошибки.

PyObject *PyContext_CopyCurrent(void)
Значение возврата: Новая ссылка.

Создаёт поверхностную копию текущего контекста потока. Возвращает NULL в случае ошибки.

int PyContext_Enter(PyObject *ctx)

Устанавливает ctx в качестве текущего контекста для текущего потока. Возвращает 0 при успехе и -1 при ошибке.

int PyContext_Exit(PyObject *ctx)

Деактивирует контекст ctx и восстанавливает предыдущий контекст в качестве текущего контекста для текущего потока. Возвращает 0 при успехе и -1 при ошибке.

Функции переменных контекста:

PyObject *PyContextVar_New(const char *name, PyObject *def)
Значение возврата: Новая ссылка.

Создаёт новый объект ContextVar. Параметр name используется для интроспекции и отладки. Параметр def определяет значение по умолчанию для переменной контекста или NULL для отсутствия значения по умолчанию. В случае ошибки функция возвращает NULL.

int PyContextVar_Get(PyObject *var, PyObject *default_value, PyObject **value)

Получает значение переменной контекста. Возвращает -1 в случае ошибки при поиске и 0 в случае отсутствия ошибки, независимо от того, найдено ли значение.

Если переменная контекста найдена, value будет указывать на неё. Если переменная контекста не найдена, value будет указывать на:

  • default_value, если он не NULL;
  • значение по умолчанию var, если он не NULL;
  • NULL

За исключением NULL, функция возвращает новую ссылку.

PyObject *PyContextVar_Set(PyObject *var, PyObject *value)
Значение возврата: Новая ссылка.

Устанавливает значение var в value в текущем контексте. Возвращает новый объект токена для этого изменения или NULL в случае ошибки.

int PyContextVar_Reset(PyObject *var, PyObject *token)

Сбрасывает состояние переменной контекста var до состояния, в котором оно находилось до вызова PyContextVar_Set(), который вернул token. Эта функция возвращает 0 при успехе и -1 при ошибке.

© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/c-api/contextvars.html

Spec-Zone.ru

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