上下文变量对象¶
版本 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。
本节详细介绍了 contextvars
模块的公共 C API。
-
type PyContext¶
用于表示
contextvars.Context
对象的 C 结构体。
-
type PyContextVar¶
用于表示
contextvars.ContextVar
对象的 C 结构体。
-
type PyContextToken¶
用于表示
contextvars.Token
对象的 C 结构体。
-
PyTypeObject PyContext_Type¶
表示*上下文*类型的类型对象。
-
PyTypeObject PyContextVar_Type¶
表示*上下文变量*类型的类型对象。
-
PyTypeObject PyContextToken_Type¶
表示*上下文变量令牌*类型的类型对象。
类型检查宏
-
int PyContext_CheckExact(PyObject *o)¶
如果 *o* 的类型为
PyContext_Type
,则返回 true。*o* 不能为NULL
。此函数始终成功。
-
int PyContextVar_CheckExact(PyObject *o)¶
如果 *o* 的类型为
PyContextVar_Type
,则返回 true。*o* 不能为NULL
。此函数始终成功。
-
int PyContextToken_CheckExact(PyObject *o)¶
如果 *o* 的类型为
PyContextToken_Type
,则返回 true。*o* 不能为NULL
。此函数始终成功。
上下文对象管理函数
上下文变量函数
-
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 上下文变量的状态重置为调用返回 token 的
PyContextVar_Set()
之前的状态。此函数在成功时返回0
,在出错时返回-1
。