上下文��对象¶
在 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);
请�阅 bpo-34762 了解详情。
在 3.7 ç‰ˆæœ¬åŠ å…¥.
本节深入介�了 contextvars 模�的公用 C API。
-
type PyContext¶
用于表示
contextvars.Context对象的 C 结构体。
-
type PyContextVar¶
用于表示
contextvars.ContextVar对象的 C 结构体。
-
type PyContextToken¶
用于表示
contextvars.Token对象的 C 结构体。
-
PyTypeObject PyContext_Type¶
表示 context 类型的类型对象。
-
PyTypeObject PyContextVar_Type¶
表示 context variable 类型的类型对象。
-
PyTypeObject PyContextToken_Type¶
表示 context variable token 类型的类型对象。
类型检查�:
-
int PyContext_CheckExact(PyObject *o)¶
如果 o 的类型为
PyContext_Type则返回真值。 o å¿…é¡»ä¸�为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)¶
- 返回值:新的引用。
创建一个新的空上下文对象。 如果�生错误则返回
NULL。
-
PyObject *PyContext_Copy(PyObject *ctx)¶
- 返回值:新的引用。
åˆ›å»ºæ‰€ä¼ å…¥çš„ ctx 上下文对象的浅拷è´�。 如果å�‘生错误则返回
NULL。
-
PyObject *PyContext_CopyCurrent(void)¶
- 返回值:新的引用。
创建当�线程上下文的浅拷�。 如果�生错误则返回
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)¶
- 返回值:新的引用。
创建一个新的
ContextVar对象。 å½¢å�‚ name 用于自我检查和调试目的。 å½¢å�‚ def 为上下文å�˜é‡�指定默认值,或为NULLè¡¨ç¤ºæ— é»˜è®¤å€¼ã€‚ 如果å�‘生错误,这个函数会返回NULL。
-
int PyContextVar_Get(PyObject *var, PyObject *default_value, PyObject **value)¶
获å�–上下文å�˜é‡�的值。如果在查找过程ä¸å�‘生错误,返回' ' -1 ' ',如果没有å�‘ç”Ÿé”™è¯¯ï¼Œæ— è®ºæ˜¯å�¦æ‰¾åˆ°å€¼ï¼Œéƒ½è¿”回' ' 0 ' ',
如果找到上下文��,value 将是指�它的指针。 如果上下文�� 没有 找到,value 将指�:
default_value,如果�
NULL;var 的默认值,如果�是
NULLï¼›NULL
除了返回
NULL,这个函数会返回一个新的引用。
-
PyObject *PyContextVar_Set(PyObject *var, PyObject *value)¶
- 返回值:新的引用。
在当å‰�上下文ä¸å°† var 设为 value。 返回针对æ¤ä¿®æ”¹çš„æ–°å‡æ�®å¯¹è±¡ï¼Œæˆ–者如果å�‘生错误则返回
NULL。
-
int PyContextVar_Reset(PyObject *var, PyObject *token)¶
将上下文�� var 的状��置为它在返回 token 的
PyContextVar_Set()被调用之å‰�的状æ€�。 æ¤å‡½æ•°æˆ�功时返回0,出错时返回-1。