Объекты переменных контекста
Примечание
Изменено в версии 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
Объект типа, представляющий тип context.
-
PyTypeObject
PyContextVar_Type
Объект типа, представляющий тип context variable.
-
PyTypeObject
PyContextToken_Type
Объект типа, представляющий тип context variable token.
Макросы проверки типа:
-
int
PyContext_CheckExact
(PyObject *o) Возвращает истина, если o имеет тип
PyContext_Type
. o не должен бытьNULL
. Функция всегда Успешна.
-
int
PyContextVar_CheckExact
(PyObject *o) Возвращает истина, если o имеет тип
PyContextVar_Type
. o не должен бытьNULL
. Функция всегда Успешна.
-
int
PyContextToken_CheckExact
(PyObject *o) Возвращает истина, если 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 будет указателем на нее. Если переменная контекста была найдена not, 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
в случае ошибки.