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 的內容,其可能為 NULL。如果 cell 不是一個 cell 物件,則將回傳 NULL 並設定例外。

PyObject *PyCell_GET(PyObject *cell)
回傳值:借用參照。

回傳 cell 物件 cell 的內容,但是不檢查 cell 是否非 NULL 並且為一個 cell 物件。

int PyCell_Set(PyObject *cell, PyObject *value)

將 cell 物件 cell 的內容設為 value。這將釋放任何對 cell 物件當前內容的參照。value 可以為 NULLcell 必須不為 NULL

在成功時回傳 0。如果 cell 不是一個 cell 物件,則將設定例外並回傳 -1

void PyCell_SET(PyObject *cell, PyObject *value)

將 cell 物件 cell 的值設為 value。不會調整參照計數,並且不會進行任何安全檢查;cell 必須為非 NULL 並且為一個 cell 物件。