Files
hustoj/web/python-docs/c-api/mapping.html
2025-03-09 17:10:56 +08:00

334 lines
22 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_CN">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>映射协议 &#8212; Python 3.8.20 文档</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<script src="../_static/translations.js"></script>
<script src="../_static/sidebar.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="在 Python 3.8.20 文档 中搜索"
href="../_static/opensearch.xml"/>
<link rel="author" title="关于这些文档" href="../about.html" />
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
<link rel="copyright" title="版权所有" href="../copyright.html" />
<link rel="next" title="迭代器协议" href="iter.html" />
<link rel="prev" title="序列协议" href="sequence.html" />
<link rel="canonical" href="https://docs.python.org/3/c-api/mapping.html" />
<style>
@media only screen {
table.full-width-table {
width: 100%;
}
}
</style>
<link rel="shortcut icon" type="image/png" href="../_static/py.svg" />
<script type="text/javascript" src="../_static/copybutton.js"></script>
<script type="text/javascript" src="../_static/menu.js"></script>
</head>
<body>
<div class="mobile-nav">
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
<label for="menuToggler" class="toggler__label">
<span></span>
</label>
<nav class="nav-content" role="navigation">
<a href="https://www.python.org/" class="nav-logo">
<img src="../_static/py.svg" alt="Logo"/>
</a>
<div class="version_switcher_placeholder"></div>
<form role="search" class="search" action="../search.html" method="get">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
<path fill-rule="nonzero"
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" fill="#444"></path>
</svg>
<input type="text" name="q" aria-label="快速搜索"/>
<input type="submit" value="转向"/>
</form>
</nav>
<div class="menu-wrapper">
<nav class="menu" role="navigation" aria-label="main navigation">
<div class="language_switcher_placeholder"></div>
<h4>上一个主题</h4>
<p class="topless"><a href="sequence.html"
title="上一章">序列协议</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="iter.html"
title="下一章">迭代器协议</a></p>
<div role="note" aria-label="source link">
<h3>本页</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">报告 Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.8/Doc/c-api/mapping.rst"
rel="nofollow">显示源代码
</a>
</li>
</ul>
</div>
</nav>
</div>
</div>
<div id="outdated-warning" style="padding: .5em; text-align: center; background-color: #FFBABA; color: #6A0E0E;">
这个文档所针对的是一个已不再受支持的 Python 旧版本。
你应当升级版本,并阅读
<a href="/3/c-api/mapping.html"> Python 当前稳定版本的文档</a>.
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>导航</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="总目录"
accesskey="I">索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模块索引"
>模块</a> |</li>
<li class="right" >
<a href="iter.html" title="迭代器协议"
accesskey="N">下一页</a> |</li>
<li class="right" >
<a href="sequence.html" title="序列协议"
accesskey="P">上一页</a> |</li>
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.8.20 Documentation</a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >Python/C API 参考手册</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="abstract.html" accesskey="U">抽象对象层</a> &#187;</li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
<input type="submit" value="转向" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
|
</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="mapping-protocol">
<span id="mapping"></span><h1>映射协议<a class="headerlink" href="#mapping-protocol" title="永久链接至标题"></a></h1>
<p>参见 <a class="reference internal" href="object.html#c.PyObject_GetItem" title="PyObject_GetItem"><code class="xref c c-func docutils literal notranslate"><span class="pre">PyObject_GetItem()</span></code></a><a class="reference internal" href="object.html#c.PyObject_SetItem" title="PyObject_SetItem"><code class="xref c c-func docutils literal notranslate"><span class="pre">PyObject_SetItem()</span></code></a><a class="reference internal" href="object.html#c.PyObject_DelItem" title="PyObject_DelItem"><code class="xref c c-func docutils literal notranslate"><span class="pre">PyObject_DelItem()</span></code></a></p>
<dl class="function">
<dt id="c.PyMapping_Check">
int <code class="sig-name descname">PyMapping_Check</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *o</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyMapping_Check" title="永久链接至目标"></a></dt>
<dd><p>如果对象提供映射协议或支持切片则返回 <code class="docutils literal notranslate"><span class="pre">1</span></code>,否则返回 <code class="docutils literal notranslate"><span class="pre">0</span></code>。 请注意它将为具有 <a class="reference internal" href="../reference/datamodel.html#object.__getitem__" title="object.__getitem__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__getitem__()</span></code></a> 方法的 Python 类返回 <code class="docutils literal notranslate"><span class="pre">1</span></code>,因为在一般情况下无法确定它所支持的键类型。 此函数总是会成功执行。</p>
</dd></dl>
<dl class="function">
<dt id="c.PyMapping_Size">
Py_ssize_t <code class="sig-name descname">PyMapping_Size</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *o</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyMapping_Size" title="永久链接至目标"></a></dt>
<dt id="c.PyMapping_Length">
Py_ssize_t <code class="sig-name descname">PyMapping_Length</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *o</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyMapping_Length" title="永久链接至目标"></a></dt>
<dd><p id="index-0">成功时返回对象 <em>o</em> 中键的数量,失败时返回 <code class="docutils literal notranslate"><span class="pre">-1</span></code>。 这相当于 Python 表达式 <code class="docutils literal notranslate"><span class="pre">len(o)</span></code></p>
</dd></dl>
<dl class="function">
<dt id="c.PyMapping_GetItemString">
<a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a>* <code class="sig-name descname">PyMapping_GetItemString</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *o</em>, const char<em> *key</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyMapping_GetItemString" title="永久链接至目标"></a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>返回 <em>o</em> 中对应于字符串 <em>key</em> 的元素,或者失败时返回 <code class="docutils literal notranslate"><span class="pre">NULL</span></code>。 这相当于 Python 表达式 <code class="docutils literal notranslate"><span class="pre">o[key]</span></code>。 另请参见 also <a class="reference internal" href="object.html#c.PyObject_GetItem" title="PyObject_GetItem"><code class="xref c c-func docutils literal notranslate"><span class="pre">PyObject_GetItem()</span></code></a></p>
</dd></dl>
<dl class="function">
<dt id="c.PyMapping_SetItemString">
int <code class="sig-name descname">PyMapping_SetItemString</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *o</em>, const char<em> *key</em>, <a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *v</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyMapping_SetItemString" title="永久链接至目标"></a></dt>
<dd><p>在对象 <em>o</em> 中将字符串 <em>key</em> 映射到值 <em>v</em>。 失败时返回 <code class="docutils literal notranslate"><span class="pre">-1</span></code>。 这相当于 Python 语句 <code class="docutils literal notranslate"><span class="pre">o[key]</span> <span class="pre">=</span> <span class="pre">v</span></code>。 另请参见 <a class="reference internal" href="object.html#c.PyObject_SetItem" title="PyObject_SetItem"><code class="xref c c-func docutils literal notranslate"><span class="pre">PyObject_SetItem()</span></code></a>。 此函数 <em>不会</em> 增加对 <em>v</em> 的引用。</p>
</dd></dl>
<dl class="function">
<dt id="c.PyMapping_DelItem">
int <code class="sig-name descname">PyMapping_DelItem</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *o</em>, <a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *key</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyMapping_DelItem" title="永久链接至目标"></a></dt>
<dd><p>从对象 <em>o</em> 中移除对象 <em>key</em> 的映射。 失败时返回 <code class="docutils literal notranslate"><span class="pre">-1</span></code>。 这相当于 Python 语句 <code class="docutils literal notranslate"><span class="pre">del</span> <span class="pre">o[key]</span></code>。 这是 <a class="reference internal" href="object.html#c.PyObject_DelItem" title="PyObject_DelItem"><code class="xref c c-func docutils literal notranslate"><span class="pre">PyObject_DelItem()</span></code></a> 的一个别名。</p>
</dd></dl>
<dl class="function">
<dt id="c.PyMapping_DelItemString">
int <code class="sig-name descname">PyMapping_DelItemString</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *o</em>, const char<em> *key</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyMapping_DelItemString" title="永久链接至目标"></a></dt>
<dd><p>从对象 <em>o</em> 中移除字符串 <em>key</em> 的映射。 失败时返回 <code class="docutils literal notranslate"><span class="pre">-1</span></code>。 这相当于 Python 语句 <code class="docutils literal notranslate"><span class="pre">del</span> <span class="pre">o[key]</span></code></p>
</dd></dl>
<dl class="function">
<dt id="c.PyMapping_HasKey">
int <code class="sig-name descname">PyMapping_HasKey</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *o</em>, <a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *key</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyMapping_HasKey" title="永久链接至目标"></a></dt>
<dd><p>如果映射对象具有键 <em>key</em> 则返回 <code class="docutils literal notranslate"><span class="pre">1</span></code>,否则返回 <code class="docutils literal notranslate"><span class="pre">0</span></code>。 这相当于 Python 表达式 <code class="docutils literal notranslate"><span class="pre">key</span> <span class="pre">in</span> <span class="pre">o</span></code>。 此函数总是会成功执行。</p>
<p>请注意在调用 <a class="reference internal" href="../reference/datamodel.html#object.__getitem__" title="object.__getitem__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__getitem__()</span></code></a> 方法期间发生的异常将会被屏蔽。 要获取错误报告请改用 <a class="reference internal" href="object.html#c.PyObject_GetItem" title="PyObject_GetItem"><code class="xref c c-func docutils literal notranslate"><span class="pre">PyObject_GetItem()</span></code></a></p>
</dd></dl>
<dl class="function">
<dt id="c.PyMapping_HasKeyString">
int <code class="sig-name descname">PyMapping_HasKeyString</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *o</em>, const char<em> *key</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyMapping_HasKeyString" title="永久链接至目标"></a></dt>
<dd><p>如果映射对象具有键 <em>key</em> 则返回 <code class="docutils literal notranslate"><span class="pre">1</span></code>,否则返回 <code class="docutils literal notranslate"><span class="pre">0</span></code>。 这相当于 Python 表达式 <code class="docutils literal notranslate"><span class="pre">key</span> <span class="pre">in</span> <span class="pre">o</span></code>。 此函数总是会成功执行。</p>
<p>请注意在调用 <a class="reference internal" href="../reference/datamodel.html#object.__getitem__" title="object.__getitem__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__getitem__()</span></code></a> 方法期间发生的异常将会被屏蔽。 要获取错误报告请改用 <a class="reference internal" href="#c.PyMapping_GetItemString" title="PyMapping_GetItemString"><code class="xref c c-func docutils literal notranslate"><span class="pre">PyMapping_GetItemString()</span></code></a></p>
</dd></dl>
<dl class="function">
<dt id="c.PyMapping_Keys">
<a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a>* <code class="sig-name descname">PyMapping_Keys</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *o</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyMapping_Keys" title="永久链接至目标"></a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>成功时,返回对象 <em>o</em> 中的键的列表。 失败时,返回 <code class="docutils literal notranslate"><span class="pre">NULL</span></code></p>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.7 版更改: </span>在之前版本中,此函数返回一个列表或元组。</p>
</div>
</dd></dl>
<dl class="function">
<dt id="c.PyMapping_Values">
<a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a>* <code class="sig-name descname">PyMapping_Values</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *o</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyMapping_Values" title="永久链接至目标"></a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>成功时,返回对象 <em>o</em> 中的值的列表。 失败时,返回 <code class="docutils literal notranslate"><span class="pre">NULL</span></code></p>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.7 版更改: </span>在之前版本中,此函数返回一个列表或元组。</p>
</div>
</dd></dl>
<dl class="function">
<dt id="c.PyMapping_Items">
<a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a>* <code class="sig-name descname">PyMapping_Items</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *o</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyMapping_Items" title="永久链接至目标"></a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>成功时,返回对象 <em>o</em> 中条目的列表,其中每个条目是一个包含键值对的元组。 失败时,返回 <code class="docutils literal notranslate"><span class="pre">NULL</span></code></p>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.7 版更改: </span>在之前版本中,此函数返回一个列表或元组。</p>
</div>
</dd></dl>
</section>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h4>上一个主题</h4>
<p class="topless"><a href="sequence.html"
title="上一章">序列协议</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="iter.html"
title="下一章">迭代器协议</a></p>
<div role="note" aria-label="source link">
<h3>本页</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">报告 Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.8/Doc/c-api/mapping.rst"
rel="nofollow">显示源代码
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>导航</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="总目录"
>索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模块索引"
>模块</a> |</li>
<li class="right" >
<a href="iter.html" title="迭代器协议"
>下一页</a> |</li>
<li class="right" >
<a href="sequence.html" title="序列协议"
>上一页</a> |</li>
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.8.20 Documentation</a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >Python/C API 参考手册</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="abstract.html" >抽象对象层</a> &#187;</li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
<input type="submit" value="转向" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
|
</li>
</ul>
</div>
<div class="footer">
&copy; <a href="../copyright.html">版权所有</a> 2001-2024, Python Software Foundation.
<br />
This page is licensed under the Python Software Foundation License Version 2.
<br />
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
<br />
<br />
The Python Software Foundation is a non-profit corporation.
<a href="https://www.python.org/psf/donations/">Please donate.</a>
<br />
<br />
最后更新于 12月 09, 2024.
<a href="https://docs.python.org/3/bugs.html">Found a bug</a>?
<br />
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 2.4.4.
</div>
</body>
</html>