Контекстные переменные Объекты¶
Примечание
Изменено в версии 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
¶ Структура языка Си, используемая для представления объекта
contextvars.Context
.
-
type
PyContextVar
¶ Структура языка Си, используемая для представления объекта
contextvars.ContextVar
.
-
type
PyContextToken
¶ Структура языка Си, используемая для представления объекта
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)¶ - Return value: New reference.
Создать новый пустой объект контекста. Возвращает
NULL
, если произошла ошибка.
-
PyObject *
PyContext_Copy
(PyObject *ctx)¶ - Return value: New reference.
Создает неглубокую копию переданного объекта контекста ctx. Возвращает
NULL
, если произошла ошибка.
-
PyObject *
PyContext_CopyCurrent
(void)¶ - Return value: New reference.
Создает неглубокую копию текущего контекста потока. Возвращает
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)¶ - Return value: New reference.
Создайте новый объект
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)¶ - Return value: New reference.
Установить значение var в value в текущем контексте. Возвращает новый объект токена для этого изменения, или
NULL
, если произошла ошибка.
-
int
PyContextVar_Reset
(PyObject *var, PyObject *token)¶ Сбросить состояние контекстной переменной var до состояния, в котором она находилась до вызова функции
PyContextVar_Set()
, вернувшей token. Эта функция возвращает0
при успехе и-1
при ошибке.