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