上下文变量对象¶
注解
在 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);
详情请参阅:issue: ' 34762 '。
3.7 新版功能.
This section details the public C API for the contextvars
module.
-
PyContext
¶ The C structure used to represent a
contextvars.Context
object.
-
PyContextVar
¶ The C structure used to represent a
contextvars.ContextVar
object.
-
PyContextToken
¶ The C structure used to represent a
contextvars.Token
object.
-
PyTypeObject
PyContext_Type
¶ The type object representing the context type.
-
PyTypeObject
PyContextVar_Type
¶ The type object representing the context variable type.
-
PyTypeObject
PyContextToken_Type
¶ The type object representing the context variable token type.
类型检查宏:
-
int
PyContext_CheckExact
(PyObject *o)¶ Return true if o is of type
PyContext_Type
. o must not be NULL. This function always succeeds.
-
int
PyContextVar_CheckExact
(PyObject *o)¶ Return true if o is of type
PyContextVar_Type
. o must not be NULL. This function always succeeds.
-
int
PyContextToken_CheckExact
(PyObject *o)¶ Return true if o is of type
PyContextToken_Type
. o must not be NULL. This function always succeeds.
Context object management functions:
-
PyObject *
PyContext_New
(void)¶ - Return value: New reference.
Create a new empty context object. Returns
NULL
if an error has occurred.
-
PyObject *
PyContext_Copy
(PyObject *ctx)¶ - Return value: New reference.
Create a shallow copy of the passed ctx context object. Returns
NULL
if an error has occurred.
-
PyObject *
PyContext_CopyCurrent
(void)¶ - Return value: New reference.
Create a shallow copy of the current thread context. Returns
NULL
if an error has occurred.
-
int
PyContext_Enter
(PyObject *ctx)¶ Set ctx as the current context for the current thread. Returns
0
on success, and-1
on error.
-
int
PyContext_Exit
(PyObject *ctx)¶ Deactivate the ctx context and restore the previous context as the current context for the current thread. Returns
0
on success, and-1
on error.
-
int
PyContext_ClearFreeList
()¶ Clear the context variable free list. Return the total number of freed items. This function always succeeds.
Context variable functions:
-
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 将是指向它的指针。 如果上下文变量 没有 找到,value 将指向:
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 的状态重置为它在返回 token 的
PyContextVar_Set()
被调用之前的状态。 此函数成功时返回0
,出错时返回-1
。