上下文變數物件¶
3.7 版本新增。
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。
本節詳細介紹了 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
,則返回 true。o 不得為NULL
。此函式始終成功。
-
int PyContextVar_CheckExact(PyObject *o)¶
如果 o 的型別為
PyContextVar_Type
,則返回 true。o 不得為NULL
。此函式始終成功。
-
int PyContextToken_CheckExact(PyObject *o)¶
如果 o 的型別為
PyContextToken_Type
,則返回 true。o 不得為NULL
。此函式始終成功。
上下文物件管理函式
上下文變數函式
-
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 上下文變數的狀態重置為呼叫
PyContextVar_Set()
返回 token 之前的狀態。此函式在成功時返回0
,在出錯時返回-1
。