Cell 对象
*********

"Cell" 对象用于实现由多个作用域引用的变量。 对于每个这样的变量，将创建
一个 Cell 对象来存储该值；引用该值的每个栈帧的局部变量将包含同样使用该
变量的对外部作用域的 Cell 的引用。 当该值被访问时，将使用包含在 Cell
中的值而不是 Cell 对象本身。 这种对 Cell 对象的非关联化引用需要来自所
生成字节码的支持；这些内部被访问时不会自动非关联化。 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* 可以为 "NULL"。 *cell* 必须不为 "NULL"。

   当成功时，返回 "0"。 如果 *cell* 不是一个 cell 对象，则设置一个异常
   并返回 "-1"。

void PyCell_SET(PyObject *cell, PyObject *value)

   将 cell 对象 *cell* 的值设为 *value*。 不会调整引用计数，并且不会进
   行检测以保证安全；*cell* 必须为非 "NULL" 并且为一个 cell 对象。
