上下文变量对象

Note

在版本 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 版中的新Function。

本节详细介绍了contextvars模块的公共 C API。

  • PyContext

  • PyContextVar

  • 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始终成功。
  • int PyContextVar_CheckExact(PyObject ** o *)

    • 如果* o *的类型为PyContextVar_Type,则返回 true。 * o *不得为NULL。此Function始终成功。
  • int PyContextToken_CheckExact(PyObject ** o *)

    • 如果* o *的类型为PyContextToken_Type,则返回 true。 * o *不得为NULL。此Function始终成功。

上下文对象 Management Function:

  • PyObject * PyContext_New(无效)
    • 返回值:新参考.

创建一个新的空上下文对象。如果发生错误,则返回NULL

创建传递的* ctx *上下文对象的浅表副本。如果发生错误,则返回NULL

  • PyObject * PyContext_CopyCurrent(无效)
    • 返回值:新参考.

创建当前线程上下文的浅表副本。如果发生错误,则返回NULL

  • int PyContext_Enter(PyObject ** ctx *)

    • 将* ctx *设置为当前线程的当前上下文。成功返回0,错误返回-1
  • int PyContext_Exit(PyObject ** ctx *)

    • 停用* ctx *上下文,并将先前的上下文恢复为当前线程的当前上下文。成功返回0,错误返回-1
  • int PyContext_ClearFreeList()

    • 清除上下文变量自由列表。返回释放的项目总数。此Function始终成功。

上下文变量Function:

  • PyObject * PyContextVar_New(const char *name PyObject def *)
    • 返回值:新参考.

创建一个新的ContextVar对象。 * name *参数用于自省和调试目的。 * def *参数可以选择指定上下文变量的默认值。如果发生错误,此函数将返回NULL

  • int PyContextVar_Get(PyObject *var PyObject default_value *,PyObject *** value *)
    • 获取上下文变量的值。如果在查找过程中发生错误,则返回-1;如果未发现错误,则返回0,无论是否找到值。

如果找到了上下文变量,则* value 将是指向它的指针。如果未找到上下文变量,则 value *将指向:

    • default_value *,如果不是NULL
  • 默认值* var *,如果不是NULL

  • NULL

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

在当前上下文中将* var 的值设置为 value *。返回指向PyObject对象或NULL(如果发生错误)的指针。

  • int PyContextVar_Reset(PyObject *var PyObject token *)
    • 将* var *上下文变量的状态重置为调用_token *的PyContextVar_Set()之前的状态。如果成功,此函数返回0,如果错误则返回-1