Объекты контекстных переменных¶Context Variables Objects
Примечание
Изменено в версии 3.7.1:В Python 3.7.1 сигнатуры всех C API контекстных переменных были изменены, чтобы использовать указатели PyObject вместо
PyContext, PyContextVar и
PyContextToken, например:
// в 3.7.0:
PyContext *PyContext_New(void);
// в 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, функция возвращает новую ссылку.
-
PyObject *
PyContextVar_Set(PyObject *var, PyObject *value)¶ - Возвращаемое значение: новая ссылка.
Устанавливает значение var равным value в текущем контексте. Возвращает новый объект токена для этого изменения или
NULL, если произошла ошибка.
-
int
PyContextVar_Reset(PyObject *var, PyObject *token)¶ Сбрасывает состояние контекстной переменной var к тому, в котором она была до вызова
PyContextVar_Set(), вернувшего token. Эта функция возвращает0в случае успеха и-1в случае ошибки.