Объекты контекстных переменных¶
Примечание
Изменено в версии 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при ошибке.
