上下文变量对象

在 3.7.1 版更改:

注解

在python 3.7.1中,所有上下文变量c api的签名是 改变 使用 PyObject 指针而不是 PyContextPyContextVarPyContextToken ,例如:

// in 3.7.0:
PyContext *PyContext_New(void);

// in 3.7.1+:
PyObject *PyContext_New(void);

bpo-34762 了解更多详细信息。

3.7 新版功能.

本节详细介绍了 contextvars 模块。

type PyContext

用于表示a的c结构 contextvars.Context 对象。

type PyContextVar

用于表示a的c结构 contextvars.ContextVar 对象。

type PyContextToken

用于表示a的c结构 contextvars.Token 对象。

PyTypeObject PyContext_Type

类型对象表示 context 类型。

PyTypeObject PyContextVar_Type

类型对象表示 上下文变量 类型。

PyTypeObject PyContextToken_Type

类型对象表示 上下文变量标记 类型。

类型检查宏:

int PyContext_CheckExact(PyObject *o)

返回true if o 属于类型 PyContext_Type . o 不得 NULL . 此函数总是成功的。

int PyContextVar_CheckExact(PyObject *o)

返回true if o 属于类型 PyContextVar_Type . o 不得 NULL . 此函数总是成功的。

int PyContextToken_CheckExact(PyObject *o)

返回true if 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 .

int PyContextVar_Get(PyObject *var, PyObject *default_value, PyObject **value)

获取上下文变量的值。返回 -1 如果在查找过程中发生错误,并且 0 如果没有出现错误,则无论是否找到值。

如果找到上下文变量, value 将是指向它的指针。如果上下文变量是 not 发现, value 将指向:

  • default_value ,如果不是 NULL

  • 默认值为 var ,如果不是 NULL

  • NULL

如果找到该值,函数将创建对它的新引用。

PyObject *PyContextVar_Set(PyObject *var, PyObject *value)
Return value: New reference.

设置的值 varvalue 在当前上下文中。返回指向 PyObject 对象,或 NULL 如果发生错误。

int PyContextVar_Reset(PyObject *var, PyObject *token)

重置的状态 var 它以前所在的上下文变量 PyContextVar_Set() 返回了 令牌 被调用。此函数返回 0 论成功与否 -1 关于错误。