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 contains 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.

PyCellObject

   C 結構的 cell 物件

PyTypeObject PyCell_Type

   對應 cell 物件的物件型別。

int PyCell_Check(ob)

   如果 *ob* 是一个 cell 对象则返回真值；*ob* 必须不为 "NULL"。

PyObject* PyCell_New(PyObject *ob)
    *Return value: New reference.*

   创建并返回一个包含值 *ob* 的新 cell 对象。形参可以为 "NULL"。

PyObject* PyCell_Get(PyObject *cell)
    *Return value: New reference.*

   回傳 cell 內容中的 *cell*。

PyObject* PyCell_GET(PyObject *cell)
    *Return value: Borrowed reference.*

   返回 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 对象。
