“Python/docs/3.9/c-api/set”的版本间差异

来自菜鸟教程
Python/docs/3.9/c-api/set
跳转至:导航、​搜索
(autoload)
 
(Page commit)
 
第1行: 第1行:
 +
{{DISPLAYTITLE:设置对象 — Python 文档}}
 
<div id="set-objects" class="section">
 
<div id="set-objects" class="section">
  
 
<span id="setobjects"></span>
 
<span id="setobjects"></span>
= Set Objects =
+
= 设置对象 =
  
This section details the public API for [[../../library/stdtypes#set|<code>set</code>]] and [[../../library/stdtypes#frozenset|<code>frozenset</code>]]
+
本节详细介绍了 [[../../library/stdtypes#set|set]] [[../../library/stdtypes#frozenset|frozenset]] 对象的公共 API。 下面未列出的任何功能最好使用抽象对象协议(包括 [[../call#c|PyObject_CallMethod()]][[../object#c|PyObject_RichCompareBool()]][[../object#c|PyObject_Hash()]][[../object#c|PyObject_Repr()]][[../object#c|PyObject_IsTrue()]][[../object#c|PyObject_Print()]][[../object#c|PyObject_GetIter())或抽象数协议(包括PyObject_Print()]]和) )、[[../number#c|PyNumber_Subtract()]][[../number#c|PyNumber_Or()]][[../number#c|PyNumber_Xor()]]、PyNumber_InPlaceAnd()、PyNumber_Or() )、[[../number#c|PyNumber_InPlaceOr()]] [[../number#c|PyNumber_InPlaceXor()]])
objects. Any functionality not listed below is best accessed using the either
 
the abstract object protocol (including [[../call#c|<code>PyObject_CallMethod()</code>]],
 
[[../object#c|<code>PyObject_RichCompareBool()</code>]], [[../object#c|<code>PyObject_Hash()</code>]],
 
[[../object#c|<code>PyObject_Repr()</code>]], [[../object#c|<code>PyObject_IsTrue()</code>]], [[../object#c|<code>PyObject_Print()</code>]], and
 
[[../object#c|<code>PyObject_GetIter()</code>]]) or the abstract number protocol (including
 
[[../number#c|<code>PyNumber_And()</code>]], [[../number#c|<code>PyNumber_Subtract()</code>]], [[../number#c|<code>PyNumber_Or()</code>]],
 
[[../number#c|<code>PyNumber_Xor()</code>]], [[../number#c|<code>PyNumber_InPlaceAnd()</code>]],
 
[[../number#c|<code>PyNumber_InPlaceSubtract()</code>]], [[../number#c|<code>PyNumber_InPlaceOr()</code>]], and
 
[[../number#c|<code>PyNumber_InPlaceXor()</code>]]).
 
  
; ''type'' <code>PySetObject</code>
+
; <span class="k"><span class="pre">type</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PySetObject</span></span></span><br />
: This subtype of [[../structures#c|<code>PyObject</code>]] is used to hold the internal data for both [[../../library/stdtypes#set|<code>set</code>]] and [[../../library/stdtypes#frozenset|<code>frozenset</code>]] objects. It is like a [[../dict#c|<code>PyDictObject</code>]] in that it is a fixed size for small sets (much like tuple storage) and will point to a separate, variable sized block of memory for medium and large sized sets (much like list storage). None of the fields of this structure should be considered public and are subject to change. All access should be done through the documented API rather than by manipulating the values in the structure.
 
  
; [[../type#c|PyTypeObject]] <code>PySet_Type</code>
+
: [[../structures#c|PyObject]] 的这个子类型用于保存 [[../../library/stdtypes#set|set]] [[../../library/stdtypes#frozenset|frozenset]] 对象的内部数据。 它就像一个 [[../dict#c|PyDictObject]],因为它是小集合的固定大小(很像元组存储),并且将指向一个单独的、可变大小的内存块用于中型和大型集(很像列表存储) )。 此结构的任何字段都不应被视为公共字段,并且可能会发生变化。 所有访问都应该通过文档化的 API 来完成,而不是通过操作结构中的值来完成。
: This is an instance of [[../type#c|<code>PyTypeObject</code>]] representing the Python [[../../library/stdtypes#set|<code>set</code>]] type.
 
  
; [[../type#c|PyTypeObject]] <code>PyFrozenSet_Type</code>
+
; [[../type#c|<span class="n"><span class="pre">PyTypeObject</span></span>]]<span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PySet_Type</span></span></span><br />
: This is an instance of [[../type#c|<code>PyTypeObject</code>]] representing the Python [[../../library/stdtypes#frozenset|<code>frozenset</code>]] type.
 
  
The following type check macros work on pointers to any Python object. Likewise,
+
: 这是一个 [[../type#c|PyTypeObject]] 的实例,代表 Python [[../../library/stdtypes#set|set]] 类型。
the constructor functions work with any iterable Python object.
 
  
; int <code>PySet_Check</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''p''<span class="sig-paren">)</span>
+
; [[../type#c|<span class="n"><span class="pre">PyTypeObject</span></span>]]<span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyFrozenSet_Type</span></span></span><br />
: Return true if ''p'' is a [[../../library/stdtypes#set|<code>set</code>]] object or an instance of a subtype.
 
  
; int <code>PyFrozenSet_Check</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''p''<span class="sig-paren">)</span>
+
: 这是一个 [[../type#c|PyTypeObject]] 的实例,代表 Python [[../../library/stdtypes#frozenset|frozenset]] 类型。
: Return true if ''p'' is a [[../../library/stdtypes#frozenset|<code>frozenset</code>]] object or an instance of a subtype.
 
  
; int <code>PyAnySet_Check</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''p''<span class="sig-paren">)</span>
+
以下类型检查宏适用于指向任何 Python 对象的指针。 同样,构造函数适用于任何可迭代的 Python 对象。
: Return true if ''p'' is a [[../../library/stdtypes#set|<code>set</code>]] object, a [[../../library/stdtypes#frozenset|<code>frozenset</code>]] object, or an instance of a subtype.
 
  
; int <code>PyAnySet_CheckExact</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''p''<span class="sig-paren">)</span>
+
; <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PySet_Check</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">p</span></span><span class="sig-paren">)</span><br />
: Return true if ''p'' is a [[../../library/stdtypes#set|<code>set</code>]] object or a [[../../library/stdtypes#frozenset|<code>frozenset</code>]] object but not an instance of a subtype.
 
  
; int <code>PyFrozenSet_CheckExact</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''p''<span class="sig-paren">)</span>
+
: 如果 ''p'' [[../../library/stdtypes#set|set]] 对象或子类型的实例,则返回 true。 此功能总是成功。
: Return true if ''p'' is a [[../../library/stdtypes#frozenset|<code>frozenset</code>]] object but not an instance of a subtype.
 
  
<dl>
+
; <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyFrozenSet_Check</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">p</span></span><span class="sig-paren">)</span><br />
<dt>[[../structures#c|PyObject]] *<code>PySet_New</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''iterable''<span class="sig-paren">)</span></dt>
 
<dd><p>''Return value: New reference.''</p>
 
<p>Return a new [[../../library/stdtypes#set|<code>set</code>]] containing objects returned by the ''iterable''. The
 
''iterable'' may be <code>NULL</code> to create a new empty set. Return the new set on
 
success or <code>NULL</code> on failure. Raise [[../../library/exceptions#TypeError|<code>TypeError</code>]] if ''iterable'' is not
 
actually iterable. The constructor is also useful for copying a set
 
(<code>c=set(s)</code>).</p></dd></dl>
 
  
<dl>
+
: 如果 ''p'' [[../../library/stdtypes#frozenset|frozenset]] 对象或子类型的实例,则返回 true。 此功能总是成功。
<dt>[[../structures#c|PyObject]] *<code>PyFrozenSet_New</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''iterable''<span class="sig-paren">)</span></dt>
 
<dd><p>''Return value: New reference.''</p>
 
<p>Return a new [[../../library/stdtypes#frozenset|<code>frozenset</code>]] containing objects returned by the ''iterable''.
 
The ''iterable'' may be <code>NULL</code> to create a new empty frozenset. Return the new
 
set on success or <code>NULL</code> on failure. Raise [[../../library/exceptions#TypeError|<code>TypeError</code>]] if ''iterable'' is
 
not actually iterable.</p></dd></dl>
 
  
The following functions and macros are available for instances of [[../../library/stdtypes#set|<code>set</code>]]
+
; <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyAnySet_Check</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">p</span></span><span class="sig-paren">)</span><br />
or [[../../library/stdtypes#frozenset|<code>frozenset</code>]] or instances of their subtypes.
 
  
; Py_ssize_t <code>PySet_Size</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''anyset''<span class="sig-paren">)</span>
+
: 如果 ''p'' [[../../library/stdtypes#set|set]] 对象、[[../../library/stdtypes#frozenset|frozenset]] 对象或子类型的实例,则返回 true。 此功能总是成功。
: Return the length of a [[../../library/stdtypes#set|<code>set</code>]] or [[../../library/stdtypes#frozenset|<code>frozenset</code>]] object. Equivalent to <code>len(anyset)</code>. Raises a <code>PyExc_SystemError</code> if ''anyset'' is not a [[../../library/stdtypes#set|<code>set</code>]], [[../../library/stdtypes#frozenset|<code>frozenset</code>]], or an instance of a subtype.
 
  
; Py_ssize_t <code>PySet_GET_SIZE</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''anyset''<span class="sig-paren">)</span>
+
; <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyAnySet_CheckExact</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">p</span></span><span class="sig-paren">)</span><br />
: Macro form of [[#c.PySet_Size|<code>PySet_Size()</code>]] without error checking.
 
  
; int <code>PySet_Contains</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''anyset'', [[../structures#c|PyObject]] *''key''<span class="sig-paren">)</span>
+
: 如果 ''p'' [[../../library/stdtypes#set|set]] 对象或 [[../../library/stdtypes#frozenset|frozenset]] 对象但不是子类型的实例,则返回 true。 此功能总是成功。
: Return <code>1</code> if found, <code>0</code> if not found, and <code>-1</code> if an error is encountered. Unlike the Python <code>__contains__()</code> method, this function does not automatically convert unhashable sets into temporary frozensets. Raise a [[../../library/exceptions#TypeError|<code>TypeError</code>]] if the ''key'' is unhashable. Raise <code>PyExc_SystemError</code> if ''anyset'' is not a [[../../library/stdtypes#set|<code>set</code>]], [[../../library/stdtypes#frozenset|<code>frozenset</code>]], or an instance of a subtype.
 
  
; int <code>PySet_Add</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''set'', [[../structures#c|PyObject]] *''key''<span class="sig-paren">)</span>
+
; <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PyFrozenSet_CheckExact</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">p</span></span><span class="sig-paren">)</span><br />
: Add ''key'' to a [[../../library/stdtypes#set|<code>set</code>]] instance. Also works with [[../../library/stdtypes#frozenset|<code>frozenset</code>]] instances (like [[../tuple#c|<code>PyTuple_SetItem()</code>]] it can be used to fill-in the values of brand new frozensets before they are exposed to other code). Return <code>0</code> on success or <code>-1</code> on failure. Raise a [[../../library/exceptions#TypeError|<code>TypeError</code>]] if the ''key'' is unhashable. Raise a [[../../library/exceptions#MemoryError|<code>MemoryError</code>]] if there is no room to grow. Raise a [[../../library/exceptions#SystemError|<code>SystemError</code>]] if ''set'' is not an instance of [[../../library/stdtypes#set|<code>set</code>]] or its subtype.
 
  
The following functions are available for instances of [[../../library/stdtypes#set|<code>set</code>]] or its
+
: 如果 ''p'' 是 [[../../library/stdtypes#frozenset|frozenset]] 对象但不是子类型的实例,则返回 true。 此功能总是成功。
subtypes but not for instances of [[../../library/stdtypes#frozenset|<code>frozenset</code>]] or its subtypes.
 
  
; int <code>PySet_Discard</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''set'', [[../structures#c|PyObject]] *''key''<span class="sig-paren">)</span>
+
; [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PySet_New</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">iterable</span></span><span class="sig-paren">)</span><br />
: Return <code>1</code> if found and removed, <code>0</code> if not found (no action taken), and <code>-1</code> if an error is encountered. Does not raise [[../../library/exceptions#KeyError|<code>KeyError</code>]] for missing keys. Raise a [[../../library/exceptions#TypeError|<code>TypeError</code>]] if the ''key'' is unhashable. Unlike the Python <code>discard()</code> method, this function does not automatically convert unhashable sets into temporary frozensets. Raise <code>PyExc_SystemError</code> if ''set'' is not an instance of [[../../library/stdtypes#set|<code>set</code>]] or its subtype.
 
  
<dl>
+
: 返回一个新的 [[../../library/stdtypes#set|set]],其中包含由 ''iterable'' 返回的对象。 ''iterable'' 可以是 <code>NULL</code> 来创建一个新的空集。 成功时返回新集合,失败时返回 <code>NULL</code>。 如果 ''iterable'' 实际上不是可迭代的,则提高 [[../../library/exceptions#TypeError|TypeError]]。 构造函数也可用于复制集合 (<code>c=set(s)</code>)。
<dt>[[../structures#c|PyObject]] *<code>PySet_Pop</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''set''<span class="sig-paren">)</span></dt>
+
 
<dd><p>''Return value: New reference.''</p>
+
; [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PyFrozenSet_New</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">iterable</span></span><span class="sig-paren">)</span><br />
<p>Return a new reference to an arbitrary object in the ''set'', and removes the
+
 
object from the ''set''. Return <code>NULL</code> on failure. Raise [[../../library/exceptions#KeyError|<code>KeyError</code>]] if the
+
: 返回一个新的 [[../../library/stdtypes#frozenset|frozenset]],其中包含由 ''iterable'' 返回的对象。 ''iterable'' 可以是 <code>NULL</code> 来创建一个新的空冻结集。 成功时返回新集合,失败时返回 <code>NULL</code>。 如果 ''iterable'' 实际上不是可迭代的,则提高 [[../../library/exceptions#TypeError|TypeError]]。
set is empty. Raise a [[../../library/exceptions#SystemError|<code>SystemError</code>]] if ''set'' is not an instance of
+
 
[[../../library/stdtypes#set|<code>set</code>]] or its subtype.</p></dd></dl>
+
以下函数和宏可用于 [[../../library/stdtypes#set|set]] 或 [[../../library/stdtypes#frozenset|frozenset]] 的实例或其子类型的实例。
 +
 
 +
; <span class="n"><span class="pre">Py_ssize_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PySet_Size</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">anyset</span></span><span class="sig-paren">)</span><br />
 +
 
 +
: 返回 [[../../library/stdtypes#set|set]] 或 [[../../library/stdtypes#frozenset|frozenset]] 对象的长度。 相当于 <code>len(anyset)</code>。 如果 ''anyset'' 不是 [[../../library/stdtypes#set|set]]、[[../../library/stdtypes#frozenset|frozenset]] 或子类型的实例,则引发 <code>PyExc_SystemError</code>。
 +
 
 +
; <span class="n"><span class="pre">Py_ssize_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PySet_GET_SIZE</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">anyset</span></span><span class="sig-paren">)</span><br />
 +
 
 +
: [[#c.PySet_Size|PySet_Size()]] 没有错误检查的宏形式。
 +
 
 +
; <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PySet_Contains</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">anyset</span></span>, [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">key</span></span><span class="sig-paren">)</span><br />
 +
 
 +
: 如果找到则返回 <code>1</code>,如果未找到则返回 <code>0</code>,如果遇到错误则返回 <code>-1</code>。 与 Python <code>__contains__()</code> 方法不同,此函数不会自动将不可散列集转换为临时冻结集。 如果 '''' 不可散列,则引发 [[../../library/exceptions#TypeError|TypeError]]。 如果 ''anyset'' 不是 [[../../library/stdtypes#set|set]]、[[../../library/stdtypes#frozenset|frozenset]] 或子类型的实例,则提高 <code>PyExc_SystemError</code>
 +
 
 +
; <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PySet_Add</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">set</span></span>, [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">key</span></span><span class="sig-paren">)</span><br />
 +
 
 +
: 将 ''key'' 添加到 [[../../library/stdtypes#set|set]] 实例。 也适用于 [[../../library/stdtypes#frozenset|frozenset]] 实例(如 [[../tuple#c|PyTuple_SetItem()]] 它可用于在暴露给其他代码之前填充全新的frozensets的值)。 成功时返回 <code>0</code>,失败时返回 <code>-1</code>。 如果 ''键'' 不可散列,则引发 [[../../library/exceptions#TypeError|TypeError]]。 如果没有增长空间,则引发 [[../../library/exceptions#MemoryError|MemoryError]]。 如果 ''set'' 不是 [[../../library/stdtypes#set|set]] 或其子类型的实例,则引发 [[../../library/exceptions#SystemError|SystemError]]。
 +
 
 +
以下函数可用于 [[../../library/stdtypes#set|set]] 或其子类型的实例,但不适用于 [[../../library/stdtypes#frozenset|frozenset]] 或其子类型的实例。
 +
 
 +
; <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PySet_Discard</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">set</span></span>, [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">key</span></span><span class="sig-paren">)</span><br />
 +
 
 +
: 如果找到并删除,则返回 <code>1</code>,如果未找到(未采取任何操作),则返回 <code>0</code>,如果遇到错误,则返回 <code>-1</code>。 不会为丢失的键引发 [[../../library/exceptions#KeyError|KeyError]]。 如果 ''键'' 不可散列,则引发 [[../../library/exceptions#TypeError|TypeError]]。 与 Python <code>discard()</code> 方法不同,此函数不会自动将不可散列集转换为临时冻结集。 如果 ''set'' 不是 [[../../library/stdtypes#set|set]] 或其子类型的实例,则提高 <code>PyExc_SystemError</code>。
 +
 
 +
; [[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">PySet_Pop</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">set</span></span><span class="sig-paren">)</span><br />
 +
 
 +
: 返回对 ''set'' 中任意对象的新引用,并从 ''set'' 中删除该对象。 失败时返回 <code>NULL</code>。 如果集合为空,则引发 [[../../library/exceptions#KeyError|KeyError]]。 如果 ''set'' 不是 [[../../library/stdtypes#set|set]] 或其子类型的实例,则引发 [[../../library/exceptions#SystemError|SystemError]]。
 +
 
 +
; <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">PySet_Clear</span></span></span><span class="sig-paren">(</span>[[../structures#c|<span class="n"><span class="pre">PyObject</span></span>]]<span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">set</span></span><span class="sig-paren">)</span><br />
 +
 
 +
: 清空所有元素的现有集合。
 +
 
 +
 
 +
</div>
 +
<div class="clearer">
  
; int <code>PySet_Clear</code><span class="sig-paren">(</span>[[../structures#c|PyObject]] *''set''<span class="sig-paren">)</span>
 
: Empty an existing set of all elements.
 
  
  
 
</div>
 
</div>
  
[[Category:Python 3.9 中文文档]]
+
[[Category:Python 3.9 文档]]

2021年10月31日 (日) 04:50的最新版本

设置对象

本节详细介绍了 setfrozenset 对象的公共 API。 下面未列出的任何功能最好使用抽象对象协议(包括 PyObject_CallMethod()PyObject_RichCompareBool()PyObject_Hash()PyObject_Repr()PyObject_IsTrue()PyObject_Print()和PyObject_GetIter())或抽象数协议(包括PyObject_Print()和) )、PyNumber_Subtract()PyNumber_Or()、PyNumber_Xor()、PyNumber_InPlaceAnd()、PyNumber_Or() )、PyNumber_InPlaceOr()PyNumber_InPlaceXor())。

type PySetObject
PyObject 的这个子类型用于保存 setfrozenset 对象的内部数据。 它就像一个 PyDictObject,因为它是小集合的固定大小(很像元组存储),并且将指向一个单独的、可变大小的内存块用于中型和大型集(很像列表存储) )。 此结构的任何字段都不应被视为公共字段,并且可能会发生变化。 所有访问都应该通过文档化的 API 来完成,而不是通过操作结构中的值来完成。
PyTypeObject PySet_Type
这是一个 PyTypeObject 的实例,代表 Python set 类型。
PyTypeObject PyFrozenSet_Type
这是一个 PyTypeObject 的实例,代表 Python frozenset 类型。

以下类型检查宏适用于指向任何 Python 对象的指针。 同样,构造函数适用于任何可迭代的 Python 对象。

int PySet_Check(PyObject *p)
如果 pset 对象或子类型的实例,则返回 true。 此功能总是成功。
int PyFrozenSet_Check(PyObject *p)
如果 pfrozenset 对象或子类型的实例,则返回 true。 此功能总是成功。
int PyAnySet_Check(PyObject *p)
如果 pset 对象、frozenset 对象或子类型的实例,则返回 true。 此功能总是成功。
int PyAnySet_CheckExact(PyObject *p)
如果 pset 对象或 frozenset 对象但不是子类型的实例,则返回 true。 此功能总是成功。
int PyFrozenSet_CheckExact(PyObject *p)
如果 pfrozenset 对象但不是子类型的实例,则返回 true。 此功能总是成功。
PyObject *PySet_New(PyObject *iterable)
返回一个新的 set,其中包含由 iterable 返回的对象。 iterable 可以是 NULL 来创建一个新的空集。 成功时返回新集合,失败时返回 NULL。 如果 iterable 实际上不是可迭代的,则提高 TypeError。 构造函数也可用于复制集合 (c=set(s))。
PyObject *PyFrozenSet_New(PyObject *iterable)
返回一个新的 frozenset,其中包含由 iterable 返回的对象。 iterable 可以是 NULL 来创建一个新的空冻结集。 成功时返回新集合,失败时返回 NULL。 如果 iterable 实际上不是可迭代的,则提高 TypeError

以下函数和宏可用于 setfrozenset 的实例或其子类型的实例。

Py_ssize_t PySet_Size(PyObject *anyset)
返回 setfrozenset 对象的长度。 相当于 len(anyset)。 如果 anyset 不是 setfrozenset 或子类型的实例,则引发 PyExc_SystemError
Py_ssize_t PySet_GET_SIZE(PyObject *anyset)
PySet_Size() 没有错误检查的宏形式。
int PySet_Contains(PyObject *anyset, PyObject *key)
如果找到则返回 1,如果未找到则返回 0,如果遇到错误则返回 -1。 与 Python __contains__() 方法不同,此函数不会自动将不可散列集转换为临时冻结集。 如果 不可散列,则引发 TypeError。 如果 anyset 不是 setfrozenset 或子类型的实例,则提高 PyExc_SystemError
int PySet_Add(PyObject *set, PyObject *key)
key 添加到 set 实例。 也适用于 frozenset 实例(如 PyTuple_SetItem() 它可用于在暴露给其他代码之前填充全新的frozensets的值)。 成功时返回 0,失败时返回 -1。 如果 不可散列,则引发 TypeError。 如果没有增长空间,则引发 MemoryError。 如果 set 不是 set 或其子类型的实例,则引发 SystemError

以下函数可用于 set 或其子类型的实例,但不适用于 frozenset 或其子类型的实例。

int PySet_Discard(PyObject *set, PyObject *key)
如果找到并删除,则返回 1,如果未找到(未采取任何操作),则返回 0,如果遇到错误,则返回 -1。 不会为丢失的键引发 KeyError。 如果 不可散列,则引发 TypeError。 与 Python discard() 方法不同,此函数不会自动将不可散列集转换为临时冻结集。 如果 set 不是 set 或其子类型的实例,则提高 PyExc_SystemError
PyObject *PySet_Pop(PyObject *set)
返回对 set 中任意对象的新引用,并从 set 中删除该对象。 失败时返回 NULL。 如果集合为空,则引发 KeyError。 如果 set 不是 set 或其子类型的实例,则引发 SystemError
int PySet_Clear(PyObject *set)
清空所有元素的现有集合。