mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 03:22:27 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			62 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
.. highlightlang:: c
 | 
						|
 | 
						|
.. _cell-objects:
 | 
						|
 | 
						|
Cell Objects
 | 
						|
------------
 | 
						|
 | 
						|
"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.
 | 
						|
 | 
						|
 | 
						|
.. c:type:: PyCellObject
 | 
						|
 | 
						|
   The C structure used for cell objects.
 | 
						|
 | 
						|
 | 
						|
.. c:var:: PyTypeObject PyCell_Type
 | 
						|
 | 
						|
   The type object corresponding to cell objects.
 | 
						|
 | 
						|
 | 
						|
.. c:function:: int PyCell_Check(ob)
 | 
						|
 | 
						|
   Return true if *ob* is a cell object; *ob* must not be *NULL*.
 | 
						|
 | 
						|
 | 
						|
.. c:function:: PyObject* PyCell_New(PyObject *ob)
 | 
						|
 | 
						|
   Create and return a new cell object containing the value *ob*. The parameter may
 | 
						|
   be *NULL*.
 | 
						|
 | 
						|
 | 
						|
.. c:function:: PyObject* PyCell_Get(PyObject *cell)
 | 
						|
 | 
						|
   Return the contents of the cell *cell*.
 | 
						|
 | 
						|
 | 
						|
.. c:function:: PyObject* PyCell_GET(PyObject *cell)
 | 
						|
 | 
						|
   Return the contents of the cell *cell*, but without checking that *cell* is
 | 
						|
   non-*NULL* and a cell object.
 | 
						|
 | 
						|
 | 
						|
.. c:function:: int PyCell_Set(PyObject *cell, PyObject *value)
 | 
						|
 | 
						|
   Set the contents of the cell object *cell* to *value*.  This releases the
 | 
						|
   reference to any current content of the cell. *value* may be *NULL*.  *cell*
 | 
						|
   must be non-*NULL*; if it is not a cell object, ``-1`` will be returned.  On
 | 
						|
   success, ``0`` will be returned.
 | 
						|
 | 
						|
 | 
						|
.. c:function:: void PyCell_SET(PyObject *cell, PyObject *value)
 | 
						|
 | 
						|
   Sets the value of the cell object *cell* to *value*.  No reference counts are
 | 
						|
   adjusted, and no checks are made for safety; *cell* must be non-*NULL* and must
 | 
						|
   be a cell object.
 |