Объекты контекстных переменных¶
Примечание
Изменено в версии 3.7.1:В Python 3.7.1 сигнатуры всех переменных контекста C API были изменены,
чтобы использовать указатели PyObject
вместо PyContext
,
PyContextVar
и PyContextToken
, например.:
// в 3.7.0:
PyContext *PyContext_New(void);
// в 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
¶ Объект type, представляющий тип контекст.
-
PyTypeObject
PyContextVar_Type
¶ Объект type, представляющий тип контекстной переменной.
-
PyTypeObject
PyContextToken_Type
¶ Объект 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
при ошибке.
-
int
PyContext_ClearFreeList
()¶ Очистить список свободных переменных контекста. Возвращает общее количество освобожденных элементов. Эта функция всегда выполняется успешно.
Функции контекстной переменной:
-
PyObject *
PyContextVar_New
(const char *name, PyObject *def)¶ - Return value: New reference.
Создать новый объект
ContextVar
. Параметр name нужен для целей самоанализа и отладки. Параметр def может дополнительно задавать значение по умолчанию для переменной контекста. Если произошла ошибка, эта функция возвращаетNULL
.
-
int
PyContextVar_Get
(PyObject *var, PyObject *default_value, PyObject **value)¶ Получение значение переменной контекста. Возвращает
-1
, если произошла ошибка во время поиска и0
если, ошибок не было и не обнаружено значение.Если контекстная переменная найдена, value будет указателем на нее. Если переменная контекста не найдена, value указывает на:
- default_value, если не
NULL
; - значение по умолчанию var, если не
NULL
; NULL
Если значение было найдено, функция создаст новую ссылку на него.
- default_value, если не
-
PyObject *
PyContextVar_Set
(PyObject *var, PyObject *value)¶ - Return value: New reference.
Установить значение var на value в текущем контексте. Возвращает указатель на объект
PyObject
илиNULL
, если произошла ошибка.
-
int
PyContextVar_Reset
(PyObject *var, PyObject *token)¶ Перезагрузить состояние контекстой переменной var, на то, в котором она была раньше
PyContextVar_Set()
, которая возвратила token при вызове. Эта функция возвращает0
об успешном выполнении и-1
при ошибке.