mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 18:28:49 +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.
 | |
| 
 | |
| 
 | |
| .. ctype:: PyCellObject
 | |
| 
 | |
|    The C structure used for cell objects.
 | |
| 
 | |
| 
 | |
| .. cvar:: PyTypeObject PyCell_Type
 | |
| 
 | |
|    The type object corresponding to cell objects.
 | |
| 
 | |
| 
 | |
| .. cfunction:: int PyCell_Check(ob)
 | |
| 
 | |
|    Return true if *ob* is a cell object; *ob* must not be *NULL*.
 | |
| 
 | |
| 
 | |
| .. cfunction:: PyObject* PyCell_New(PyObject *ob)
 | |
| 
 | |
|    Create and return a new cell object containing the value *ob*. The parameter may
 | |
|    be *NULL*.
 | |
| 
 | |
| 
 | |
| .. cfunction:: PyObject* PyCell_Get(PyObject *cell)
 | |
| 
 | |
|    Return the contents of the cell *cell*.
 | |
| 
 | |
| 
 | |
| .. cfunction:: PyObject* PyCell_GET(PyObject *cell)
 | |
| 
 | |
|    Return the contents of the cell *cell*, but without checking that *cell* is
 | |
|    non-*NULL* and a cell object.
 | |
| 
 | |
| 
 | |
| .. cfunction:: 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.
 | |
| 
 | |
| 
 | |
| .. cfunction:: 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.
 | 
