Cell 物件
*********

"Cell" objects are used to implement variables referenced by multiple
scopes. For each such variable, a cell object is created to store the
value; the local variables of each stack frame that references the
value contain a reference to the cells from outer scopes which also
use that variable.  When the value is accessed, the value contained in
the cell is used instead of the cell object itself.  This de-
referencing of the cell object requires support from the generated
byte-code; these are not automatically de-referenced when accessed.
Cell objects are not likely to be useful elsewhere.

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* 可以為 "NULL"。*cell* 必須不為 "NULL"。

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

void PyCell_SET(PyObject *cell, PyObject *value)

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