Объекты переменных контекста
Примечание
Изменено в версии 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 -
Структура C, используемая для представления объекта
contextvars.Context.
-
type PyContextVar -
Структура C, используемая для представления объекта
contextvars.ContextVar.
-
type PyContextToken -
Структура C, используемая для представления объекта
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) -
Значение возврата: Новая ссылка.
Создаёт новый пустой объект контекста. Возвращает
NULLесли произошла ошибка.
-
PyObject *PyContext_Copy(PyObject *ctx) -
Значение возврата: Новая ссылка.
Создаёт поверхностную копию объекта контекста ctx. Возвращает
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 будет указывать на:
-
default_value, если не
NULL; - значение по умолчанию var, если не
NULL; NULL
За исключением
NULL, функция возвращает новую ссылку. -
default_value, если не
-
PyObject *PyContextVar_Set(PyObject *var, PyObject *value) -
Значение возврата: Новая ссылка.
Устанавливает значение var в value в текущем контексте. Возвращает новый объект токена для этого изменения или
NULLесли произошла ошибка.
-
int PyContextVar_Reset(PyObject *var, PyObject *token) -
Сбрасывает состояние переменной контекста var до того состояния, в котором она была до вызова
PyContextVar_Set(), который вернул token. Эта функция возвращает0при успехе и-1при ошибке.
© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.10/c-api/contextvars.html