Spec-Zone.ru › Python 3.10

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

Примечание

Изменено в версии 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 для получения дополнительной информации.

Новое в версии 3.7.

В этом разделе подробно описан публичный 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–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.10/c-api/contextvars.html

Spec-Zone.ru

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