Об’єкти змінних контексту¶
Примітка
Змінено в версії 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.
У цьому розділі детально описано публічний API C для модуля contextvar
.
-
PyContext
¶ Структура C, яка використовується для представлення об’єкта
contextvars.Context
.
-
PyContextVar
¶ Структура C, яка використовується для представлення об’єкта
contextvars.ContextVar
.
-
PyContextToken
¶ Структура C, яка використовується для представлення об’єкта
contextvars.Token
.
-
PyTypeObject
PyContext_Type
¶ Об’єкт типу, що представляє тип context.
-
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 буде вказівником на неї. Якщо контекстну змінну не знайдено, значення вказуватиме на:
default_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()
, який повернув токен. Ця функція повертає0
у разі успіху та-1
у разі помилки.