上下文變量對象?
在 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 類(lèi)型的類(lèi)型對象。
-
PyTypeObject PyContextVar_Type?
表示 context variable 類(lèi)型的類(lèi)型對象。
-
PyTypeObject PyContextToken_Type?
表示 context variable token 類(lèi)型的類(lèi)型對象。
類(lèi)型檢查宏:
-
int PyContext_CheckExact(PyObject *o)?
如果 o 的類(lèi)型為
PyContext_Type
則返回真值。 o 必須不為NULL
。 此函數總是會(huì )成功執行。
-
int PyContextVar_CheckExact(PyObject *o)?
如果 o 的類(lèi)型為
PyContextVar_Type
則返回真值。 o 必須不為NULL
。 此函數總是會(huì )成功執行。
-
int PyContextToken_CheckExact(PyObject *o)?
如果 o 的類(lèi)型為
PyContextToken_Type
則返回真值。 o 必須不為NULL
。 此函數總是會(huì )成功執行。
上下文對象管理函數:
-
PyObject *PyContext_New(void)?
- Return value: New reference.
創(chuàng )建一個(gè)新的空上下文對象。 如果發(fā)生錯誤則返回
NULL
。
-
PyObject *PyContext_Copy(PyObject *ctx)?
- Return value: New reference.
創(chuàng )建所傳入的 ctx 上下文對象的淺拷貝。 如果發(fā)生錯誤則返回
NULL
。
-
PyObject *PyContext_CopyCurrent(void)?
- Return value: New reference.
創(chuàng )建當前線(xiàn)程上下文的淺拷貝。 如果發(fā)生錯誤則返回
NULL
。
-
int PyContext_Exit(PyObject *ctx)?
取消激活 ctx 上下文并將之前的上下文恢復為當前線(xiàn)程的當前上下文。 成功時(shí)返回
0
,出錯時(shí)返回-1
。
上下文變量函數:
-
PyObject *PyContextVar_New(const char *name, PyObject *def)?
- Return value: New reference.
創(chuàng )建一個(gè)新的
ContextVar
對象。 形參 name 用于自我檢查和調試目的。 形參 def 為上下文變量指定默認值,或為NULL
表示無(wú)默認值。 如果發(fā)生錯誤,這個(gè)函數會(huì )返回NULL
。
-
int PyContextVar_Get(PyObject *var, PyObject *default_value, PyObject **value)?
獲取上下文變量的值。如果在查找過(guò)程中發(fā)生錯誤,返回' ' -1 ' ',如果沒(méi)有發(fā)生錯誤,無(wú)論是否找到值,都返回' ' 0 ' ',
如果找到上下文變量,value 將是指向它的指針。 如果上下文變量 沒(méi)有 找到,value 將指向:
default_value,如果非``NULL``;
var 的默認值,如果不是
NULL
;NULL
除了返回
NULL
,這個(gè)函數會(huì )返回一個(gè)新的引用。
-
PyObject *PyContextVar_Set(PyObject *var, PyObject *value)?
- Return value: New reference.
在當前上下文中將 var 設為 value。 返回針對此修改的新憑據對象,或者如果發(fā)生錯誤則返回
NULL
。
-
int PyContextVar_Reset(PyObject *var, PyObject *token)?
將上下文變量 var 的狀態(tài)重置為它在返回 token 的
PyContextVar_Set()
被調用之前的狀態(tài)。 此函數成功時(shí)返回0
,出錯時(shí)返回-1
。