Объекты контекстных переменных¶
Добавлено в версии 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 для получения более подробной информации.
В этом разделе подробно описывается общедоступный C API для модуля contextvars
.
-
type PyContext¶
Структура языка Си, используемая для представления объекта
contextvars.Context
.
-
type PyContextVar¶
Структура языка Си, используемая для представления объекта
contextvars.ContextVar
.
-
type PyContextToken¶
Структура языка Си, используемая для представления объекта
contextvars.Token
.
-
PyTypeObject PyContext_Type¶
Объект type, представляющий тип context.
-
PyTypeObject PyContextVar_Type¶
Объект type, представляющий тип контекстной переменной.
-
PyTypeObject PyContextToken_Type¶
Объект type, представляющий тип контекстной переменной token.
Макросы для проверки типа:
-
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 context. Возвращает
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 будет указывать на:
значение по умолчанию, если не
NULL
;значение по умолчанию var, если не
NULL
;NULL
За исключением
NULL
, функция возвращает новую ссылку.