Объекты переменных контекста
Примечание
Изменено в версии 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.
-
PyContext -
Структура C, используемая для представления объекта
contextvars.Context.
-
PyContextVar -
Структура C, используемая для представления объекта
contextvars.ContextVar.
-
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–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/c-api/contextvars.html