上下文变量对象

注意

在版本3.7.1中更改:

在Python 3.7.1中,所有上下文变量C的签名都是更改使用PyObject指针代替PyContext, PyContextVar,和PyContextToken,例如:

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

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

有关详细信息,请参阅bpo-34762 .

版本3.7.

本节详细介绍了contextvarsmodule.

PyContext
C结构用来表示contextvars.Context宾语。
PyContextVar
C结构用来表示contextvars.ContextVar宾语。
PyContextToken
C结构用来表示contextvars.Token宾语。
PyTypeObject PyContext_Type
代表的类型对象context类型。
PyTypeObject PyContextVar_Type
表示context variable type.
PyTypeObject的类型对象PyContextToken_Type
表示context variable token类型的类型对象.

类型检查宏:

int PyContext_CheckExact PyObject  *o
如果oPyContext_Type. o的类型,则返回true,不能是NULL。这个功能总是成功的.
int PyContextVar_CheckExact PyObject  *o
如果o是类型PyContextVar_Type. o一定不能NULL。这个功能总是成功的.
int PyContextToken_CheckExact PyObject  *o
如果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空隙
Return value: New reference.

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

// PyContext_Enter PyObject  *ctx
设置ctx作为当前线程的当前上下文。在成功时回复0,在错误时回复-1
// PyContext_Exit PyObject *ctx
停用ctx上下文并将先前的上下文恢复为当前线程的当前上下文。成功时返回0,错误时返回-1
// PyContext_ClearFreeList
清除上下文变量空闲列表。返回不同项目的总数。这个函数总是成功的.

上下文变量函数:

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将是指向它的指针。如果上下文变量是notvalue将指向:

  • default_value,如果不是NULL;
  • 默认值var,如果没有NULL;
  • NULL

如果找到该值,该函数将创建一个新的引用.

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

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

int PyContextVar_Reset PyObject  *var,PyObject  *token
var上下文变量的状态重置为PyContextVar_Set()之前的状态,返回token被调用。该函数返回0成功和-1错误.

评论被关闭。