Spec-Zone.ru › Python 3.13

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

Добавлено в версии 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–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/c-api/contextvars.html

Spec-Zone.ru

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