Контекстные переменные Объекты¶
Примечание
Изменено в версии 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¶ Структура языка Си, используемая для представления объекта
contextvars.Context.
-
type
PyContextVar¶ Структура языка Си, используемая для представления объекта
contextvars.ContextVar.
-
type
PyContextToken¶ Структура языка Си, используемая для представления объекта
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)¶ - Return value: New reference.
Создать новый пустой объект контекста. Возвращает
NULL, если произошла ошибка.
-
PyObject *
PyContext_Copy(PyObject *ctx)¶ - Return value: New reference.
Создает неглубокую копию переданного объекта контекста ctx. Возвращает
NULL, если произошла ошибка.
-
PyObject *
PyContext_CopyCurrent(void)¶ - Return value: New reference.
Создает неглубокую копию текущего контекста потока. Возвращает
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)¶ - Return value: New reference.
Создайте новый объект
ContextVar. Параметр name используется в целях интроспекции и отладки. Параметр def задает значение по умолчанию для контекстной переменной, илиNULLдля отсутствия значения по умолчанию. Если произошла ошибка, эта функция возвращаетNULL.
-
int
PyContextVar_Get(PyObject *var, PyObject *default_value, PyObject **value)¶ Получить значение контекстной переменной. Возвращает
-1, если во время поиска произошла ошибка, и0, если ошибки не произошло, независимо от того, найдено значение или нет.Если контекстная переменная была найдена, value будет указателем на нее. Если контекстная переменная не найдена, значение будет указывать на:
значение_по_умолчанию, если не
NULL;значение по умолчанию для var, если не
NULL;NULL
За исключением
NULL, функция возвращает новую ссылку.
-
PyObject *
PyContextVar_Set(PyObject *var, PyObject *value)¶ - Return value: New reference.
Установить значение var в value в текущем контексте. Возвращает новый объект токена для этого изменения, или
NULL, если произошла ошибка.
-
int
PyContextVar_Reset(PyObject *var, PyObject *token)¶ Сбросить состояние контекстной переменной var до состояния, в котором она находилась до вызова функции
PyContextVar_Set(), вернувшей token. Эта функция возвращает0при успехе и-1при ошибке.