Spec-Zone.ru › Python 3.9

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

Примечание

Изменено в версии 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.

PyContext

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

PyContextVar

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

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–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/c-api/contextvars.html

Spec-Zone.ru

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