Объекты переменных контекста
Добавлено в версии 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 -
Структура 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–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/c-api/contextvars.html