Об’єкти змінних контексту¶
Нове в версії 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 для отримання додаткової інформації.
У цьому розділі детально описано публічний API C для модуля contextvar
.
-
type PyContext¶
Структура C, яка використовується для представлення об’єкта
contextvars.Context
.
-
type PyContextVar¶
Структура C, яка використовується для представлення об’єкта
contextvars.ContextVar
.
-
type 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
у разі помилки.