Cell 物件
"Cell" 物件用於實現被多個作用域所參照 (reference) 的變數。對於每個這樣的變數,都會有個 cell 物件為了儲存該值而被建立;參照該值的每個 stack frame 中的區域性變數包含外部作用域的 cell 參照,它同樣使用了該變數。存取該值時,將使用 cell 中包含的值而不是 cell 物件本身。這種對 cell 物件的去除參照 (de-reference) 需要生成的位元組碼 (byte-code) 有支援;存取時不會自動去除參照。cell 物件在其他地方可能不太有用。
-
type PyCellObject
Cell 物件所用之 C 結構。
-
PyTypeObject PyCell_Type
對應 cell 物件的物件型別。
-
int PyCell_Check(PyObject *ob)
如果 ob 是一個 cell 物件則回傳真值;ob 必須不為 NULL
。此函式總是會成功執行。
-
PyObject *PyCell_New(PyObject *ob)
- 回傳值:新的參照。
建立並回傳一個包含 ob 的新 cell 物件。參數可以為 NULL
。
-
PyObject *PyCell_Get(PyObject *cell)
- 回傳值:新的參照。
回傳 cell 內容中的 cell。
-
PyObject *PyCell_GET(PyObject *cell)
- 回傳值:借用參照。
回傳 cell 物件 cell 的內容,但是不檢查 cell 是否非 NULL
並且為一個 cell 物件。
-
int PyCell_Set(PyObject *cell, PyObject *value)
將 cell 物件 cell 的內容設為 value。這將釋放任何對 cell 物件當前內容的參照。value 可以為 NULL
。cell 必須不為 NULL
;如果它不是一個 cell 物件則將回傳 -1
。如果設定成功則將回傳 0
。
-
void PyCell_SET(PyObject *cell, PyObject *value)
將 cell 物件 cell 的值設為 value。不會調整參照計數,並且不會進行任何安全檢查;cell 必須為非 NULL
並且為一個 cell 物件。