Контекстные переменные Объекты¶
Added in version 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.
В этом разделе описывается общедоступный API на языке C для модуля 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 будет указателем на нее. Если контекстная переменная не найдена, значение будет указывать на:
значение_по_умолчанию, если не
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()
, вернувшего токен. Эта функция возвращает0
при успехе и-1
при ошибке.