On this page
上下文变量对象
Note
在版本 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 版中的新Function。
本节详细介绍了contextvars模块的公共 C API。
PyContext
- 用于表示contextvars.Context对象的 C 结构。
PyContextVar
- 用于表示contextvars.ContextVar对象的 C 结构。
PyContextToken
- 用于表示
contextvars.Token
对象的 C 结构。
- 用于表示
PyTypeObject
PyContext_Type
- 表示* context *类型的类型对象。
PyTypeObject
PyContextVar_Type
- 表示* context 变量*类型的类型对象。
PyTypeObject
PyContextToken_Type
- 表示上下文变量标记类型的类型对象。
Type-check macros:
int
PyContext_CheckExact
(PyObject ** o *)- 如果* o *的类型为PyContext_Type,则返回 true。 * o *不得为
NULL
。此Function始终成功。
- 如果* o *的类型为PyContext_Type,则返回 true。 * o *不得为
int
PyContextVar_CheckExact
(PyObject ** o *)- 如果* o *的类型为PyContextVar_Type,则返回 true。 * o *不得为
NULL
。此Function始终成功。
- 如果* o *的类型为PyContextVar_Type,则返回 true。 * o *不得为
int
PyContextToken_CheckExact
(PyObject ** o *)- 如果* o *的类型为PyContextToken_Type,则返回 true。 * o *不得为
NULL
。此Function始终成功。
- 如果* o *的类型为PyContextToken_Type,则返回 true。 * o *不得为
上下文对象 Management Function:
- PyObject *
PyContext_New
(无效)- 返回值:新参考.
创建一个新的空上下文对象。如果发生错误,则返回NULL
。
创建传递的* ctx *上下文对象的浅表副本。如果发生错误,则返回NULL
。
- PyObject *
PyContext_CopyCurrent
(无效)- 返回值:新参考.
创建当前线程上下文的浅表副本。如果发生错误,则返回NULL
。
int
PyContext_Enter
(PyObject ** ctx *)- 将* ctx *设置为当前线程的当前上下文。成功返回
0
,错误返回-1
。
- 将* ctx *设置为当前线程的当前上下文。成功返回
int
PyContext_Exit
(PyObject ** ctx *)- 停用* ctx *上下文,并将先前的上下文恢复为当前线程的当前上下文。成功返回
0
,错误返回-1
。
- 停用* ctx *上下文,并将先前的上下文恢复为当前线程的当前上下文。成功返回
int
PyContext_ClearFreeList
()- 清除上下文变量自由列表。返回释放的项目总数。此Function始终成功。
上下文变量Function:
创建一个新的ContextVar
对象。 * name *参数用于自省和调试目的。 * def *参数可以选择指定上下文变量的默认值。如果发生错误,此函数将返回NULL
。
- int
PyContextVar_Get
(PyObject *var ,PyObject default_value *,PyObject *** value *)- 获取上下文变量的值。如果在查找过程中发生错误,则返回
-1
;如果未发现错误,则返回0
,无论是否找到值。
- 获取上下文变量的值。如果在查找过程中发生错误,则返回
如果找到了上下文变量,则* value 将是指向它的指针。如果未找到上下文变量,则 value *将指向:
-
- default_value *,如果不是
NULL
;
- default_value *,如果不是
默认值* var *,如果不是
NULL
;NULL
如果找到该值,则该函数将创建对该值的新引用。
在当前上下文中将* var 的值设置为 value *。返回指向PyObject对象或NULL
(如果发生错误)的指针。
- int
PyContextVar_Reset
(PyObject *var ,PyObject token *)- 将* var *上下文变量的状态重置为调用_token *的PyContextVar_Set()之前的状态。如果成功,此函数返回
0
,如果错误则返回-1
。
- 将* var *上下文变量的状态重置为调用_token *的PyContextVar_Set()之前的状态。如果成功,此函数返回