gooderp18绿色标准版
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

507 行
40KB

  1. <!DOCTYPE html>
  2. <html lang="en" data-content_root="../">
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
  6. <meta property="og:title" content="Function Objects" />
  7. <meta property="og:type" content="website" />
  8. <meta property="og:url" content="https://docs.python.org/3/c-api/function.html" />
  9. <meta property="og:site_name" content="Python documentation" />
  10. <meta property="og:description" content="There are a few functions specific to Python functions." />
  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="There are a few functions specific to Python functions." />
  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>Function Objects &#8212; Python 3.12.3 documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
  18. <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" />
  19. <link rel="stylesheet" type="text/css" href="../_static/pydoctheme.css?v=bb723527" />
  20. <link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="../_static/pygments_dark.css?v=b20cc3f5" />
  21. <script src="../_static/documentation_options.js?v=2c828074"></script>
  22. <script src="../_static/doctools.js?v=888ff710"></script>
  23. <script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
  24. <script src="../_static/sidebar.js"></script>
  25. <link rel="search" type="application/opensearchdescription+xml"
  26. title="Search within Python 3.12.3 documentation"
  27. href="../_static/opensearch.xml"/>
  28. <link rel="author" title="About these documents" href="../about.html" />
  29. <link rel="index" title="Index" href="../genindex.html" />
  30. <link rel="search" title="Search" href="../search.html" />
  31. <link rel="copyright" title="Copyright" href="../copyright.html" />
  32. <link rel="next" title="Instance Method Objects" href="method.html" />
  33. <link rel="prev" title="Set Objects" href="set.html" />
  34. <link rel="canonical" href="https://docs.python.org/3/c-api/function.html" />
  35. <style>
  36. @media only screen {
  37. table.full-width-table {
  38. width: 100%;
  39. }
  40. }
  41. </style>
  42. <link rel="stylesheet" href="../_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">
  43. <link rel="shortcut icon" type="image/png" href="../_static/py.svg" />
  44. <script type="text/javascript" src="../_static/copybutton.js"></script>
  45. <script type="text/javascript" src="../_static/menu.js"></script>
  46. <script type="text/javascript" src="../_static/search-focus.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="Python 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="set.html"
  85. title="previous chapter">Set Objects</a></p>
  86. </div>
  87. <div>
  88. <h4>Next topic</h4>
  89. <p class="topless"><a href="method.html"
  90. title="next chapter">Instance Method 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/function.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="method.html" title="Instance Method Objects"
  117. accesskey="N">next</a> |</li>
  118. <li class="right" >
  119. <a href="set.html" title="Set 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.3 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="">Function 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" id="search-box" />
  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="function-objects">
  160. <span id="id1"></span><h1>Function Objects<a class="headerlink" href="#function-objects" title="Link to this heading">¶</a></h1>
  161. <p id="index-0">There are a few functions specific to Python functions.</p>
  162. <dl class="c type">
  163. <dt class="sig sig-object c" id="c.PyFunctionObject">
  164. <span class="k"><span class="pre">type</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyFunctionObject</span></span></span><a class="headerlink" href="#c.PyFunctionObject" title="Link to this definition">¶</a><br /></dt>
  165. <dd><p>The C structure used for functions.</p>
  166. </dd></dl>
  167. <dl class="c var">
  168. <dt class="sig sig-object c" id="c.PyFunction_Type">
  169. <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">PyFunction_Type</span></span></span><a class="headerlink" href="#c.PyFunction_Type" title="Link to this definition">¶</a><br /></dt>
  170. <dd><p id="index-1">This is an instance of <a class="reference internal" href="type.html#c.PyTypeObject" title="PyTypeObject"><code class="xref c c-type docutils literal notranslate"><span class="pre">PyTypeObject</span></code></a> and represents the Python function
  171. type. It is exposed to Python programmers as <code class="docutils literal notranslate"><span class="pre">types.FunctionType</span></code>.</p>
  172. </dd></dl>
  173. <dl class="c function">
  174. <dt class="sig sig-object c" id="c.PyFunction_Check">
  175. <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyFunction_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">o</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyFunction_Check" title="Link to this definition">¶</a><br /></dt>
  176. <dd><p>Return true if <em>o</em> is a function object (has type <a class="reference internal" href="#c.PyFunction_Type" title="PyFunction_Type"><code class="xref c c-data docutils literal notranslate"><span class="pre">PyFunction_Type</span></code></a>).
  177. The parameter must not be <code class="docutils literal notranslate"><span class="pre">NULL</span></code>. This function always succeeds.</p>
  178. </dd></dl>
  179. <dl class="c function">
  180. <dt class="sig sig-object c" id="c.PyFunction_New">
  181. <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">PyFunction_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">code</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">globals</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyFunction_New" title="Link to this definition">¶</a><br /></dt>
  182. <dd><em class="refcount">Return value: New reference.</em><p>Return a new function object associated with the code object <em>code</em>. <em>globals</em>
  183. must be a dictionary with the global variables accessible to the function.</p>
  184. <p>The function’s docstring and name are retrieved from the code object.
  185. <a class="reference internal" href="../reference/datamodel.html#function.__module__" title="function.__module__"><code class="xref py py-attr docutils literal notranslate"><span class="pre">__module__</span></code></a>
  186. is retrieved from <em>globals</em>. The argument defaults, annotations and closure are
  187. set to <code class="docutils literal notranslate"><span class="pre">NULL</span></code>. <a class="reference internal" href="../reference/datamodel.html#function.__qualname__" title="function.__qualname__"><code class="xref py py-attr docutils literal notranslate"><span class="pre">__qualname__</span></code></a> is set to the same value as
  188. the code object’s <a class="reference internal" href="../reference/datamodel.html#codeobject.co_qualname" title="codeobject.co_qualname"><code class="xref py py-attr docutils literal notranslate"><span class="pre">co_qualname</span></code></a> field.</p>
  189. </dd></dl>
  190. <dl class="c function">
  191. <dt class="sig sig-object c" id="c.PyFunction_NewWithQualName">
  192. <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">PyFunction_NewWithQualName</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">code</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">globals</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">qualname</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyFunction_NewWithQualName" title="Link to this definition">¶</a><br /></dt>
  193. <dd><em class="refcount">Return value: New reference.</em><p>As <a class="reference internal" href="#c.PyFunction_New" title="PyFunction_New"><code class="xref c c-func docutils literal notranslate"><span class="pre">PyFunction_New()</span></code></a>, but also allows setting the function object’s
  194. <a class="reference internal" href="../reference/datamodel.html#function.__qualname__" title="function.__qualname__"><code class="xref py py-attr docutils literal notranslate"><span class="pre">__qualname__</span></code></a> attribute.
  195. <em>qualname</em> should be a unicode object or <code class="docutils literal notranslate"><span class="pre">NULL</span></code>;
  196. if <code class="docutils literal notranslate"><span class="pre">NULL</span></code>, the <code class="xref py py-attr docutils literal notranslate"><span class="pre">__qualname__</span></code> attribute is set to the same value as
  197. the code object’s <a class="reference internal" href="../reference/datamodel.html#codeobject.co_qualname" title="codeobject.co_qualname"><code class="xref py py-attr docutils literal notranslate"><span class="pre">co_qualname</span></code></a> field.</p>
  198. <div class="versionadded">
  199. <p><span class="versionmodified added">New in version 3.3.</span></p>
  200. </div>
  201. </dd></dl>
  202. <dl class="c function">
  203. <dt class="sig sig-object c" id="c.PyFunction_GetCode">
  204. <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">PyFunction_GetCode</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">op</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyFunction_GetCode" title="Link to this definition">¶</a><br /></dt>
  205. <dd><em class="refcount">Return value: Borrowed reference.</em><p>Return the code object associated with the function object <em>op</em>.</p>
  206. </dd></dl>
  207. <dl class="c function">
  208. <dt class="sig sig-object c" id="c.PyFunction_GetGlobals">
  209. <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">PyFunction_GetGlobals</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">op</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyFunction_GetGlobals" title="Link to this definition">¶</a><br /></dt>
  210. <dd><em class="refcount">Return value: Borrowed reference.</em><p>Return the globals dictionary associated with the function object <em>op</em>.</p>
  211. </dd></dl>
  212. <dl class="c function">
  213. <dt class="sig sig-object c" id="c.PyFunction_GetModule">
  214. <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">PyFunction_GetModule</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">op</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyFunction_GetModule" title="Link to this definition">¶</a><br /></dt>
  215. <dd><em class="refcount">Return value: Borrowed reference.</em><p>Return a <a class="reference internal" href="../glossary.html#term-borrowed-reference"><span class="xref std std-term">borrowed reference</span></a> to the <a class="reference internal" href="../reference/datamodel.html#function.__module__" title="function.__module__"><code class="xref py py-attr docutils literal notranslate"><span class="pre">__module__</span></code></a>
  216. attribute of the <a class="reference internal" href="../reference/datamodel.html#user-defined-funcs"><span class="std std-ref">function object</span></a> <em>op</em>.
  217. It can be <em>NULL</em>.</p>
  218. <p>This is normally a <a class="reference internal" href="../library/stdtypes.html#str" title="str"><code class="xref py py-class docutils literal notranslate"><span class="pre">string</span></code></a> containing the module name,
  219. but can be set to any other object by Python code.</p>
  220. </dd></dl>
  221. <dl class="c function">
  222. <dt class="sig sig-object c" id="c.PyFunction_GetDefaults">
  223. <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">PyFunction_GetDefaults</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">op</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyFunction_GetDefaults" title="Link to this definition">¶</a><br /></dt>
  224. <dd><em class="refcount">Return value: Borrowed reference.</em><p>Return the argument default values of the function object <em>op</em>. This can be a
  225. tuple of arguments or <code class="docutils literal notranslate"><span class="pre">NULL</span></code>.</p>
  226. </dd></dl>
  227. <dl class="c function">
  228. <dt class="sig sig-object c" id="c.PyFunction_SetDefaults">
  229. <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyFunction_SetDefaults</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">op</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">defaults</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyFunction_SetDefaults" title="Link to this definition">¶</a><br /></dt>
  230. <dd><p>Set the argument default values for the function object <em>op</em>. <em>defaults</em> must be
  231. <code class="docutils literal notranslate"><span class="pre">Py_None</span></code> or a tuple.</p>
  232. <p>Raises <a class="reference internal" href="../library/exceptions.html#SystemError" title="SystemError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">SystemError</span></code></a> and returns <code class="docutils literal notranslate"><span class="pre">-1</span></code> on failure.</p>
  233. </dd></dl>
  234. <dl class="c function">
  235. <dt class="sig sig-object c" id="c.PyFunction_SetVectorcall">
  236. <span class="kt"><span class="pre">void</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyFunction_SetVectorcall</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#c.PyFunctionObject" title="PyFunctionObject"><span class="n"><span class="pre">PyFunctionObject</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">func</span></span>, <a class="reference internal" href="call.html#c.vectorcallfunc" title="vectorcallfunc"><span class="n"><span class="pre">vectorcallfunc</span></span></a><span class="w"> </span><span class="n"><span class="pre">vectorcall</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyFunction_SetVectorcall" title="Link to this definition">¶</a><br /></dt>
  237. <dd><p>Set the vectorcall field of a given function object <em>func</em>.</p>
  238. <p>Warning: extensions using this API must preserve the behavior
  239. of the unaltered (default) vectorcall function!</p>
  240. <div class="versionadded">
  241. <p><span class="versionmodified added">New in version 3.12.</span></p>
  242. </div>
  243. </dd></dl>
  244. <dl class="c function">
  245. <dt class="sig sig-object c" id="c.PyFunction_GetClosure">
  246. <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">PyFunction_GetClosure</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">op</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyFunction_GetClosure" title="Link to this definition">¶</a><br /></dt>
  247. <dd><em class="refcount">Return value: Borrowed reference.</em><p>Return the closure associated with the function object <em>op</em>. This can be <code class="docutils literal notranslate"><span class="pre">NULL</span></code>
  248. or a tuple of cell objects.</p>
  249. </dd></dl>
  250. <dl class="c function">
  251. <dt class="sig sig-object c" id="c.PyFunction_SetClosure">
  252. <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyFunction_SetClosure</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">op</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">closure</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyFunction_SetClosure" title="Link to this definition">¶</a><br /></dt>
  253. <dd><p>Set the closure associated with the function object <em>op</em>. <em>closure</em> must be
  254. <code class="docutils literal notranslate"><span class="pre">Py_None</span></code> or a tuple of cell objects.</p>
  255. <p>Raises <a class="reference internal" href="../library/exceptions.html#SystemError" title="SystemError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">SystemError</span></code></a> and returns <code class="docutils literal notranslate"><span class="pre">-1</span></code> on failure.</p>
  256. </dd></dl>
  257. <dl class="c function">
  258. <dt class="sig sig-object c" id="c.PyFunction_GetAnnotations">
  259. <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">PyFunction_GetAnnotations</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">op</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyFunction_GetAnnotations" title="Link to this definition">¶</a><br /></dt>
  260. <dd><em class="refcount">Return value: Borrowed reference.</em><p>Return the annotations of the function object <em>op</em>. This can be a
  261. mutable dictionary or <code class="docutils literal notranslate"><span class="pre">NULL</span></code>.</p>
  262. </dd></dl>
  263. <dl class="c function">
  264. <dt class="sig sig-object c" id="c.PyFunction_SetAnnotations">
  265. <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyFunction_SetAnnotations</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">op</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">annotations</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyFunction_SetAnnotations" title="Link to this definition">¶</a><br /></dt>
  266. <dd><p>Set the annotations for the function object <em>op</em>. <em>annotations</em>
  267. must be a dictionary or <code class="docutils literal notranslate"><span class="pre">Py_None</span></code>.</p>
  268. <p>Raises <a class="reference internal" href="../library/exceptions.html#SystemError" title="SystemError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">SystemError</span></code></a> and returns <code class="docutils literal notranslate"><span class="pre">-1</span></code> on failure.</p>
  269. </dd></dl>
  270. <dl class="c function">
  271. <dt class="sig sig-object c" id="c.PyFunction_AddWatcher">
  272. <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyFunction_AddWatcher</span></span></span><span class="sig-paren">(</span><a class="reference internal" href="#c.PyFunction_WatchCallback" title="PyFunction_WatchCallback"><span class="n"><span class="pre">PyFunction_WatchCallback</span></span></a><span class="w"> </span><span class="n"><span class="pre">callback</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyFunction_AddWatcher" title="Link to this definition">¶</a><br /></dt>
  273. <dd><p>Register <em>callback</em> as a function watcher for the current interpreter.
  274. Return an ID which may be passed to <a class="reference internal" href="#c.PyFunction_ClearWatcher" title="PyFunction_ClearWatcher"><code class="xref c c-func docutils literal notranslate"><span class="pre">PyFunction_ClearWatcher()</span></code></a>.
  275. In case of error (e.g. no more watcher IDs available),
  276. return <code class="docutils literal notranslate"><span class="pre">-1</span></code> and set an exception.</p>
  277. <div class="versionadded">
  278. <p><span class="versionmodified added">New in version 3.12.</span></p>
  279. </div>
  280. </dd></dl>
  281. <dl class="c function">
  282. <dt class="sig sig-object c" id="c.PyFunction_ClearWatcher">
  283. <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyFunction_ClearWatcher</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">watcher_id</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyFunction_ClearWatcher" title="Link to this definition">¶</a><br /></dt>
  284. <dd><p>Clear watcher identified by <em>watcher_id</em> previously returned from
  285. <a class="reference internal" href="#c.PyFunction_AddWatcher" title="PyFunction_AddWatcher"><code class="xref c c-func docutils literal notranslate"><span class="pre">PyFunction_AddWatcher()</span></code></a> for the current interpreter.
  286. Return <code class="docutils literal notranslate"><span class="pre">0</span></code> on success, or <code class="docutils literal notranslate"><span class="pre">-1</span></code> and set an exception on error
  287. (e.g. if the given <em>watcher_id</em> was never registered.)</p>
  288. <div class="versionadded">
  289. <p><span class="versionmodified added">New in version 3.12.</span></p>
  290. </div>
  291. </dd></dl>
  292. <dl class="c type">
  293. <dt class="sig sig-object c" id="c.PyFunction_WatchEvent">
  294. <span class="k"><span class="pre">type</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyFunction_WatchEvent</span></span></span><a class="headerlink" href="#c.PyFunction_WatchEvent" title="Link to this definition">¶</a><br /></dt>
  295. <dd><p>Enumeration of possible function watcher events:
  296. - <code class="docutils literal notranslate"><span class="pre">PyFunction_EVENT_CREATE</span></code>
  297. - <code class="docutils literal notranslate"><span class="pre">PyFunction_EVENT_DESTROY</span></code>
  298. - <code class="docutils literal notranslate"><span class="pre">PyFunction_EVENT_MODIFY_CODE</span></code>
  299. - <code class="docutils literal notranslate"><span class="pre">PyFunction_EVENT_MODIFY_DEFAULTS</span></code>
  300. - <code class="docutils literal notranslate"><span class="pre">PyFunction_EVENT_MODIFY_KWDEFAULTS</span></code></p>
  301. <div class="versionadded">
  302. <p><span class="versionmodified added">New in version 3.12.</span></p>
  303. </div>
  304. </dd></dl>
  305. <dl class="c type">
  306. <dt class="sig sig-object c" id="c.PyFunction_WatchCallback">
  307. <span class="k"><span class="pre">typedef</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PyFunction_WatchCallback</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><a class="reference internal" href="#c.PyFunction_WatchEvent" title="PyFunction_WatchEvent"><span class="n"><span class="pre">PyFunction_WatchEvent</span></span></a><span class="w"> </span><span class="n"><span class="pre">event</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="#c.PyFunctionObject" title="PyFunctionObject"><span class="n"><span class="pre">PyFunctionObject</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">func</span></span><span class="p"><span class="pre">,</span></span><span class="w"> </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">new_value</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#c.PyFunction_WatchCallback" title="Link to this definition">¶</a><br /></dt>
  308. <dd><p>Type of a function watcher callback function.</p>
  309. <p>If <em>event</em> is <code class="docutils literal notranslate"><span class="pre">PyFunction_EVENT_CREATE</span></code> or <code class="docutils literal notranslate"><span class="pre">PyFunction_EVENT_DESTROY</span></code>
  310. then <em>new_value</em> will be <code class="docutils literal notranslate"><span class="pre">NULL</span></code>. Otherwise, <em>new_value</em> will hold a
  311. <a class="reference internal" href="../glossary.html#term-borrowed-reference"><span class="xref std std-term">borrowed reference</span></a> to the new value that is about to be stored in
  312. <em>func</em> for the attribute that is being modified.</p>
  313. <p>The callback may inspect but must not modify <em>func</em>; doing so could have
  314. unpredictable effects, including infinite recursion.</p>
  315. <p>If <em>event</em> is <code class="docutils literal notranslate"><span class="pre">PyFunction_EVENT_CREATE</span></code>, then the callback is invoked
  316. after <cite>func</cite> has been fully initialized. Otherwise, the callback is invoked
  317. before the modification to <em>func</em> takes place, so the prior state of <em>func</em>
  318. can be inspected. The runtime is permitted to optimize away the creation of
  319. function objects when possible. In such cases no event will be emitted.
  320. Although this creates the possibility of an observable difference of
  321. runtime behavior depending on optimization decisions, it does not change
  322. the semantics of the Python code being executed.</p>
  323. <p>If <em>event</em> is <code class="docutils literal notranslate"><span class="pre">PyFunction_EVENT_DESTROY</span></code>, Taking a reference in the
  324. callback to the about-to-be-destroyed function will resurrect it, preventing
  325. it from being freed at this time. When the resurrected object is destroyed
  326. later, any watcher callbacks active at that time will be called again.</p>
  327. <p>If the callback sets an exception, it must return <code class="docutils literal notranslate"><span class="pre">-1</span></code>; this exception will
  328. be printed as an unraisable exception using <a class="reference internal" href="exceptions.html#c.PyErr_WriteUnraisable" title="PyErr_WriteUnraisable"><code class="xref c c-func docutils literal notranslate"><span class="pre">PyErr_WriteUnraisable()</span></code></a>.
  329. Otherwise it should return <code class="docutils literal notranslate"><span class="pre">0</span></code>.</p>
  330. <p>There may already be a pending exception set on entry to the callback. In
  331. this case, the callback should return <code class="docutils literal notranslate"><span class="pre">0</span></code> with the same exception still
  332. set. This means the callback may not call any other API that can set an
  333. exception unless it saves and clears the exception state first, and restores
  334. it before returning.</p>
  335. <div class="versionadded">
  336. <p><span class="versionmodified added">New in version 3.12.</span></p>
  337. </div>
  338. </dd></dl>
  339. </section>
  340. <div class="clearer"></div>
  341. </div>
  342. </div>
  343. </div>
  344. <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
  345. <div class="sphinxsidebarwrapper">
  346. <div>
  347. <h4>Previous topic</h4>
  348. <p class="topless"><a href="set.html"
  349. title="previous chapter">Set Objects</a></p>
  350. </div>
  351. <div>
  352. <h4>Next topic</h4>
  353. <p class="topless"><a href="method.html"
  354. title="next chapter">Instance Method Objects</a></p>
  355. </div>
  356. <div role="note" aria-label="source link">
  357. <h3>This Page</h3>
  358. <ul class="this-page-menu">
  359. <li><a href="../bugs.html">Report a Bug</a></li>
  360. <li>
  361. <a href="https://github.com/python/cpython/blob/main/Doc/c-api/function.rst"
  362. rel="nofollow">Show Source
  363. </a>
  364. </li>
  365. </ul>
  366. </div>
  367. </div>
  368. <div id="sidebarbutton" title="Collapse sidebar">
  369. <span>«</span>
  370. </div>
  371. </div>
  372. <div class="clearer"></div>
  373. </div>
  374. <div class="related" role="navigation" aria-label="related navigation">
  375. <h3>Navigation</h3>
  376. <ul>
  377. <li class="right" style="margin-right: 10px">
  378. <a href="../genindex.html" title="General Index"
  379. >index</a></li>
  380. <li class="right" >
  381. <a href="../py-modindex.html" title="Python Module Index"
  382. >modules</a> |</li>
  383. <li class="right" >
  384. <a href="method.html" title="Instance Method Objects"
  385. >next</a> |</li>
  386. <li class="right" >
  387. <a href="set.html" title="Set Objects"
  388. >previous</a> |</li>
  389. <li><img src="../_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"/></li>
  390. <li><a href="https://www.python.org/">Python</a> &#187;</li>
  391. <li class="switchers">
  392. <div class="language_switcher_placeholder"></div>
  393. <div class="version_switcher_placeholder"></div>
  394. </li>
  395. <li>
  396. </li>
  397. <li id="cpython-language-and-version">
  398. <a href="../index.html">3.12.3 Documentation</a> &#187;
  399. </li>
  400. <li class="nav-item nav-item-1"><a href="index.html" >Python/C API Reference Manual</a> &#187;</li>
  401. <li class="nav-item nav-item-2"><a href="concrete.html" >Concrete Objects Layer</a> &#187;</li>
  402. <li class="nav-item nav-item-this"><a href="">Function Objects</a></li>
  403. <li class="right">
  404. <div class="inline-search" role="search">
  405. <form class="inline-search" action="../search.html" method="get">
  406. <input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box" />
  407. <input type="submit" value="Go" />
  408. </form>
  409. </div>
  410. |
  411. </li>
  412. <li class="right">
  413. <label class="theme-selector-label">
  414. Theme
  415. <select class="theme-selector" oninput="activateTheme(this.value)">
  416. <option value="auto" selected>Auto</option>
  417. <option value="light">Light</option>
  418. <option value="dark">Dark</option>
  419. </select>
  420. </label> |</li>
  421. </ul>
  422. </div>
  423. <div class="footer">
  424. &copy;
  425. <a href="../copyright.html">
  426. Copyright
  427. </a>
  428. 2001-2024, Python Software Foundation.
  429. <br />
  430. This page is licensed under the Python Software Foundation License Version 2.
  431. <br />
  432. Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
  433. <br />
  434. See <a href="/license.html">History and License</a> for more information.<br />
  435. <br />
  436. The Python Software Foundation is a non-profit corporation.
  437. <a href="https://www.python.org/psf/donations/">Please donate.</a>
  438. <br />
  439. <br />
  440. Last updated on Apr 09, 2024 (13:47 UTC).
  441. <a href="/bugs.html">Found a bug</a>?
  442. <br />
  443. Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.2.6.
  444. </div>
  445. </body>
  446. </html>
上海开阖软件有限公司 沪ICP备12045867号-1