cell.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
  6. <meta property="og:title" content="Cell Objects" />
  7. <meta property="og:type" content="website" />
  8. <meta property="og:url" content="https://docs.python.org/3/c-api/cell.html" />
  9. <meta property="og:site_name" content="Python documentation" />
  10. <meta property="og:description" content="“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 refer..." />
  11. <meta property="og:image" content="https://docs.python.org/3/_static/og-image.png" />
  12. <meta property="og:image:alt" content="Python documentation" />
  13. <meta name="description" content="“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 refer..." />
  14. <meta property="og:image:width" content="200" />
  15. <meta property="og:image:height" content="200" />
  16. <meta name="theme-color" content="#3776ab" />
  17. <title>Cell Objects &#8212; Python 3.12.0 documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
  18. <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
  19. <link rel="stylesheet" type="text/css" href="../_static/pydoctheme.css?digest=b37c26da2f7529d09fe70b41c4b2133fe4931a90" />
  20. <link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="../_static/pygments_dark.css" />
  21. <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
  22. <script src="../_static/jquery.js"></script>
  23. <script src="../_static/underscore.js"></script>
  24. <script src="../_static/doctools.js"></script>
  25. <script src="../_static/sidebar.js"></script>
  26. <link rel="search" type="application/opensearchdescription+xml"
  27. title="Search within Python 3.12.0 documentation"
  28. href="../_static/opensearch.xml"/>
  29. <link rel="author" title="About these documents" href="../about.html" />
  30. <link rel="index" title="Index" href="../genindex.html" />
  31. <link rel="search" title="Search" href="../search.html" />
  32. <link rel="copyright" title="Copyright" href="../copyright.html" />
  33. <link rel="next" title="Code Objects" href="code.html" />
  34. <link rel="prev" title="Instance Method Objects" href="method.html" />
  35. <link rel="canonical" href="https://docs.python.org/3/c-api/cell.html" />
  36. <style>
  37. @media only screen {
  38. table.full-width-table {
  39. width: 100%;
  40. }
  41. }
  42. </style>
  43. <link rel="stylesheet" href="../_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">
  44. <link rel="shortcut icon" type="image/png" href="../_static/py.svg" />
  45. <script type="text/javascript" src="../_static/copybutton.js"></script>
  46. <script type="text/javascript" src="../_static/menu.js"></script>
  47. <script type="text/javascript" src="../_static/themetoggle.js"></script>
  48. </head>
  49. <body>
  50. <div class="mobile-nav">
  51. <input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
  52. aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
  53. <nav class="nav-content" role="navigation">
  54. <label for="menuToggler" class="toggler__label">
  55. <span></span>
  56. </label>
  57. <span class="nav-items-wrapper">
  58. <a href="https://www.python.org/" class="nav-logo">
  59. <img src="../_static/py.svg" alt="Logo"/>
  60. </a>
  61. <span class="version_switcher_placeholder"></span>
  62. <form role="search" class="search" action="../search.html" method="get">
  63. <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
  64. <path fill-rule="nonzero" fill="currentColor" d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>
  65. </svg>
  66. <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" />
  67. <input type="submit" value="Go"/>
  68. </form>
  69. </span>
  70. </nav>
  71. <div class="menu-wrapper">
  72. <nav class="menu" role="navigation" aria-label="main navigation">
  73. <div class="language_switcher_placeholder"></div>
  74. <label class="theme-selector-label">
  75. Theme
  76. <select class="theme-selector" oninput="activateTheme(this.value)">
  77. <option value="auto" selected>Auto</option>
  78. <option value="light">Light</option>
  79. <option value="dark">Dark</option>
  80. </select>
  81. </label>
  82. <div>
  83. <h4>Previous topic</h4>
  84. <p class="topless"><a href="method.html"
  85. title="previous chapter">Instance Method Objects</a></p>
  86. </div>
  87. <div>
  88. <h4>Next topic</h4>
  89. <p class="topless"><a href="code.html"
  90. title="next chapter">Code Objects</a></p>
  91. </div>
  92. <div role="note" aria-label="source link">
  93. <h3>This Page</h3>
  94. <ul class="this-page-menu">
  95. <li><a href="../bugs.html">Report a Bug</a></li>
  96. <li>
  97. <a href="https://github.com/python/cpython/blob/main/Doc/c-api/cell.rst"
  98. rel="nofollow">Show Source
  99. </a>
  100. </li>
  101. </ul>
  102. </div>
  103. </nav>
  104. </div>
  105. </div>
  106. <div class="related" role="navigation" aria-label="related navigation">
  107. <h3>Navigation</h3>
  108. <ul>
  109. <li class="right" style="margin-right: 10px">
  110. <a href="../genindex.html" title="General Index"
  111. accesskey="I">index</a></li>
  112. <li class="right" >
  113. <a href="../py-modindex.html" title="Python Module Index"
  114. >modules</a> |</li>
  115. <li class="right" >
  116. <a href="code.html" title="Code Objects"
  117. accesskey="N">next</a> |</li>
  118. <li class="right" >
  119. <a href="method.html" title="Instance Method Objects"
  120. accesskey="P">previous</a> |</li>
  121. <li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
  122. <li><a href="https://www.python.org/">Python</a> &#187;</li>
  123. <li class="switchers">
  124. <div class="language_switcher_placeholder"></div>
  125. <div class="version_switcher_placeholder"></div>
  126. </li>
  127. <li>
  128. </li>
  129. <li id="cpython-language-and-version">
  130. <a href="../index.html">3.12.0 Documentation</a> &#187;
  131. </li>
  132. <li class="nav-item nav-item-1"><a href="index.html" >Python/C API Reference Manual</a> &#187;</li>
  133. <li class="nav-item nav-item-2"><a href="concrete.html" accesskey="U">Concrete Objects Layer</a> &#187;</li>
  134. <li class="nav-item nav-item-this"><a href="">Cell Objects</a></li>
  135. <li class="right">
  136. <div class="inline-search" role="search">
  137. <form class="inline-search" action="../search.html" method="get">
  138. <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" />
  139. <input type="submit" value="Go" />
  140. </form>
  141. </div>
  142. |
  143. </li>
  144. <li class="right">
  145. <label class="theme-selector-label">
  146. Theme
  147. <select class="theme-selector" oninput="activateTheme(this.value)">
  148. <option value="auto" selected>Auto</option>
  149. <option value="light">Light</option>
  150. <option value="dark">Dark</option>
  151. </select>
  152. </label> |</li>
  153. </ul>
  154. </div>
  155. <div class="document">
  156. <div class="documentwrapper">
  157. <div class="bodywrapper">
  158. <div class="body" role="main">
  159. <section id="cell-objects">
  160. <span id="id1"></span><h1>Cell Objects<a class="headerlink" href="#cell-objects" title="Permalink to this headline">¶</a></h1>
  161. <p>“Cell” objects are used to implement variables referenced by multiple scopes.
  162. For each such variable, a cell object is created to store the value; the local
  163. variables of each stack frame that references the value contains a reference to
  164. the cells from outer scopes which also use that variable. When the value is
  165. accessed, the value contained in the cell is used instead of the cell object
  166. itself. This de-referencing of the cell object requires support from the
  167. generated byte-code; these are not automatically de-referenced when accessed.
  168. Cell objects are not likely to be useful elsewhere.</p>
  169. <dl class="c type">
  170. <dt class="sig sig-object c" id="c.PyCellObject">
  171. <span class="k"><span class="pre">type</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyCellObject</span></span></span><a class="headerlink" href="#c.PyCellObject" title="Permalink to this definition">¶</a><br /></dt>
  172. <dd><p>The C structure used for cell objects.</p>
  173. </dd></dl>
  174. <dl class="c var">
  175. <dt class="sig sig-object c" id="c.PyCell_Type">
  176. <a class="reference internal" href="type.html#c.PyTypeObject" title="PyTypeObject"><span class="n"><span class="pre">PyTypeObject</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyCell_Type</span></span></span><a class="headerlink" href="#c.PyCell_Type" title="Permalink to this definition">¶</a><br /></dt>
  177. <dd><p>The type object corresponding to cell objects.</p>
  178. </dd></dl>
  179. <dl class="c function">
  180. <dt class="sig sig-object c" id="c.PyCell_Check">
  181. <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyCell_Check</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject"><span class="n"><span class="pre">PyObject</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ob</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyCell_Check" title="Permalink to this definition">¶</a><br /></dt>
  182. <dd><p>Return true if <em>ob</em> is a cell object; <em>ob</em> must not be <code class="docutils literal notranslate"><span class="pre">NULL</span></code>. This
  183. function always succeeds.</p>
  184. </dd></dl>
  185. <dl class="c function">
  186. <dt class="sig sig-object c" id="c.PyCell_New">
  187. <a class="reference internal" href="structures.html#c.PyObject" title="PyObject"><span class="n"><span class="pre">PyObject</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PyCell_New</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject"><span class="n"><span class="pre">PyObject</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">ob</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyCell_New" title="Permalink to this definition">¶</a><br /></dt>
  188. <dd><em class="refcount">Return value: New reference.</em><p>Create and return a new cell object containing the value <em>ob</em>. The parameter may
  189. be <code class="docutils literal notranslate"><span class="pre">NULL</span></code>.</p>
  190. </dd></dl>
  191. <dl class="c function">
  192. <dt class="sig sig-object c" id="c.PyCell_Get">
  193. <a class="reference internal" href="structures.html#c.PyObject" title="PyObject"><span class="n"><span class="pre">PyObject</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PyCell_Get</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject"><span class="n"><span class="pre">PyObject</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">cell</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyCell_Get" title="Permalink to this definition">¶</a><br /></dt>
  194. <dd><em class="refcount">Return value: New reference.</em><p>Return the contents of the cell <em>cell</em>.</p>
  195. </dd></dl>
  196. <dl class="c function">
  197. <dt class="sig sig-object c" id="c.PyCell_GET">
  198. <a class="reference internal" href="structures.html#c.PyObject" title="PyObject"><span class="n"><span class="pre">PyObject</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PyCell_GET</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject"><span class="n"><span class="pre">PyObject</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">cell</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyCell_GET" title="Permalink to this definition">¶</a><br /></dt>
  199. <dd><em class="refcount">Return value: Borrowed reference.</em><p>Return the contents of the cell <em>cell</em>, but without checking that <em>cell</em> is
  200. non-<code class="docutils literal notranslate"><span class="pre">NULL</span></code> and a cell object.</p>
  201. </dd></dl>
  202. <dl class="c function">
  203. <dt class="sig sig-object c" id="c.PyCell_Set">
  204. <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyCell_Set</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject"><span class="n"><span class="pre">PyObject</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">cell</span></span>, <a class="reference internal" href="structures.html#c.PyObject" title="PyObject"><span class="n"><span class="pre">PyObject</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">value</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyCell_Set" title="Permalink to this definition">¶</a><br /></dt>
  205. <dd><p>Set the contents of the cell object <em>cell</em> to <em>value</em>. This releases the
  206. reference to any current content of the cell. <em>value</em> may be <code class="docutils literal notranslate"><span class="pre">NULL</span></code>. <em>cell</em>
  207. must be non-<code class="docutils literal notranslate"><span class="pre">NULL</span></code>; if it is not a cell object, <code class="docutils literal notranslate"><span class="pre">-1</span></code> will be returned. On
  208. success, <code class="docutils literal notranslate"><span class="pre">0</span></code> will be returned.</p>
  209. </dd></dl>
  210. <dl class="c function">
  211. <dt class="sig sig-object c" id="c.PyCell_SET">
  212. <span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyCell_SET</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject"><span class="n"><span class="pre">PyObject</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">cell</span></span>, <a class="reference internal" href="structures.html#c.PyObject" title="PyObject"><span class="n"><span class="pre">PyObject</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">value</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyCell_SET" title="Permalink to this definition">¶</a><br /></dt>
  213. <dd><p>Sets the value of the cell object <em>cell</em> to <em>value</em>. No reference counts are
  214. adjusted, and no checks are made for safety; <em>cell</em> must be non-<code class="docutils literal notranslate"><span class="pre">NULL</span></code> and must
  215. be a cell object.</p>
  216. </dd></dl>
  217. </section>
  218. <div class="clearer"></div>
  219. </div>
  220. </div>
  221. </div>
  222. <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
  223. <div class="sphinxsidebarwrapper">
  224. <div>
  225. <h4>Previous topic</h4>
  226. <p class="topless"><a href="method.html"
  227. title="previous chapter">Instance Method Objects</a></p>
  228. </div>
  229. <div>
  230. <h4>Next topic</h4>
  231. <p class="topless"><a href="code.html"
  232. title="next chapter">Code Objects</a></p>
  233. </div>
  234. <div role="note" aria-label="source link">
  235. <h3>This Page</h3>
  236. <ul class="this-page-menu">
  237. <li><a href="../bugs.html">Report a Bug</a></li>
  238. <li>
  239. <a href="https://github.com/python/cpython/blob/main/Doc/c-api/cell.rst"
  240. rel="nofollow">Show Source
  241. </a>
  242. </li>
  243. </ul>
  244. </div>
  245. </div>
  246. </div>
  247. <div class="clearer"></div>
  248. </div>
  249. <div class="related" role="navigation" aria-label="related navigation">
  250. <h3>Navigation</h3>
  251. <ul>
  252. <li class="right" style="margin-right: 10px">
  253. <a href="../genindex.html" title="General Index"
  254. >index</a></li>
  255. <li class="right" >
  256. <a href="../py-modindex.html" title="Python Module Index"
  257. >modules</a> |</li>
  258. <li class="right" >
  259. <a href="code.html" title="Code Objects"
  260. >next</a> |</li>
  261. <li class="right" >
  262. <a href="method.html" title="Instance Method Objects"
  263. >previous</a> |</li>
  264. <li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
  265. <li><a href="https://www.python.org/">Python</a> &#187;</li>
  266. <li class="switchers">
  267. <div class="language_switcher_placeholder"></div>
  268. <div class="version_switcher_placeholder"></div>
  269. </li>
  270. <li>
  271. </li>
  272. <li id="cpython-language-and-version">
  273. <a href="../index.html">3.12.0 Documentation</a> &#187;
  274. </li>
  275. <li class="nav-item nav-item-1"><a href="index.html" >Python/C API Reference Manual</a> &#187;</li>
  276. <li class="nav-item nav-item-2"><a href="concrete.html" >Concrete Objects Layer</a> &#187;</li>
  277. <li class="nav-item nav-item-this"><a href="">Cell Objects</a></li>
  278. <li class="right">
  279. <div class="inline-search" role="search">
  280. <form class="inline-search" action="../search.html" method="get">
  281. <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" />
  282. <input type="submit" value="Go" />
  283. </form>
  284. </div>
  285. |
  286. </li>
  287. <li class="right">
  288. <label class="theme-selector-label">
  289. Theme
  290. <select class="theme-selector" oninput="activateTheme(this.value)">
  291. <option value="auto" selected>Auto</option>
  292. <option value="light">Light</option>
  293. <option value="dark">Dark</option>
  294. </select>
  295. </label> |</li>
  296. </ul>
  297. </div>
  298. <div class="footer">
  299. &copy; <a href="../copyright.html">Copyright</a> 2001-2023, Python Software Foundation.
  300. <br />
  301. This page is licensed under the Python Software Foundation License Version 2.
  302. <br />
  303. Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
  304. <br />
  305. See <a href="/license.html">History and License</a> for more information.<br />
  306. <br />
  307. The Python Software Foundation is a non-profit corporation.
  308. <a href="https://www.python.org/psf/donations/">Please donate.</a>
  309. <br />
  310. <br />
  311. Last updated on Oct 02, 2023.
  312. <a href="/bugs.html">Found a bug</a>?
  313. <br />
  314. Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 4.5.0.
  315. </div>
  316. </body>
  317. </html>