Объекты переменных контекста
Изменено в версии 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.11/c-api/contextvars.html