注意
Changed in version 3.7.1:
In Python 3.7.1 the signatures of all context variables C APIs were
changed
要使用
PyObject
pointers instead of
PyContext
,
PyContextVar
,和
PyContextToken
,如:
// in 3.7.0:
PyContext *PyContext_New(void);
// in 3.7.1+:
PyObject *PyContext_New(void);
见 bpo-34762 了解更多细节。
3.7 版新增。
This section details the public C API for the
contextvars
模块。
PyContext
¶
The C structure used to represent a
contextvars.Context
对象。
PyContextVar
¶
The C structure used to represent a
contextvars.ContextVar
对象。
PyContextToken
¶
The C structure used to represent a
contextvars.Token
对象。
PyContext_Type
¶
The type object representing the context 类型。
PyContextVar_Type
¶
The type object representing the context variable 类型。
PyContextToken_Type
¶
The type object representing the context variable token 类型。
Type-check macros:
PyContext_CheckExact
(
PyObject
*o
)
¶
返回 True 若
o
是类型
PyContext_Type
.
o
必须不是
NULL
. This function always succeeds.
PyContextVar_CheckExact
(
PyObject
*o
)
¶
返回 True 若
o
是类型
PyContextVar_Type
.
o
必须不是
NULL
. This function always succeeds.
PyContextToken_CheckExact
(
PyObject
*o
)
¶
返回 True 若
o
是类型
PyContextToken_Type
.
o
必须不是
NULL
. This function always succeeds.
Context object management functions:
PyContext_New
(
void
)
¶
Create a new empty context object. Returns
NULL
if an error has occurred.
PyContext_Copy
(
PyObject
*ctx
)
¶
Create a shallow copy of the passed
ctx
context object. Returns
NULL
if an error has occurred.
PyContext_CopyCurrent
(
void
)
¶
Create a shallow copy of the current thread context. Returns
NULL
if an error has occurred.
PyContext_Enter
(
PyObject
*ctx
)
¶
Set
ctx
as the current context for the current thread. Returns
0
on success, and
-1
当出错时。
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
当出错时。
Context variable functions:
PyContextVar_New
(
const char
*name
,
PyObject
*def
)
¶
创建新的
ContextVar
object. The
name
parameter is used for introspection and debug purposes. The
def
parameter specifies a default value for the context variable, or
NULL
for no default. If an error has occurred, this function returns
NULL
.
PyContextVar_Get
(
PyObject
*var
,
PyObject
*default_value
,
PyObject
**value
)
¶
Get the value of a context variable. Returns
-1
if an error has occurred during lookup, and
0
if no error occurred, whether or not a value was found.
If the context variable was found, value will be a pointer to it. If the context variable was not found, value will point to:
default_value
,若不
NULL
;
the default value of
var
,若不
NULL
;
NULL
Except for
NULL
, the function returns a new reference.
PyContextVar_Set
(
PyObject
*var
,
PyObject
*value
)
¶
Set the value of
var
to
value
in the current context. Returns a new token object for this change, or
NULL
if an error has occurred.
PyContextVar_Reset
(
PyObject
*var
,
PyObject
*token
)
¶
Reset the state of the
var
context variable to that it was in before
PyContextVar_Set()
that returned the
token
was called. This function returns
0
on success and
-1
当出错时。