python 清空所有对象_Py(107)Python/C API 参考手册:集合对象

集合对象

这一章节详细介绍了  set 和  frozenset 对象的公共 API。任何未在下面列出的功能最好是使用抽象对象协议 (包括  PyObject_CallMethod()PyObject_RichCompareBool()PyObject_Hash()PyObject_Repr()PyObject_IsTrue()PyObject_Print() 以及  PyObject_GetIter()) 或者抽象数字协议 (包括  PyNumber_And()PyNumber_Subtract()PyNumber_Or()PyNumber_Xor()PyNumber_InPlaceAnd()PyNumber_InPlaceSubtract()PyNumber_InPlaceOr() 以及  PyNumber_InPlaceXor()) 来访问。
  • PySetObject
  • 这个 PyObject 的子类型被用来保存 set 和 frozenset 对象的内部数据。它类似于 PyDictObject,因为对于小尺寸集合来说它是固定大小的(很像元组的存储方式),并且对于中等和大尺寸集合来说它将指向单独的可变大小的内存块(很像列表的存储方式)。此结构体的字段不应被视为公有并且可能发生改变。所有访问应当通过已写入文档的 API 来进行,而不可通过操纵结构体中的值。
  • PyTypeObject PySet_Type
  • 这是一个 PyTypeObject 实例,表示 Python set 类型。
  • PyTypeObject PyFrozenSet_Type
  • 这是一个 PyTypeObject 实例,表示 Python frozenset 类型。
下列类型检查宏适用于指向任意 Python 对象的指针。类似地,这些构造函数也适用于任意可迭代的 Python 对象。
  • int PySet_Check(PyObject *p)
  • 如果 p 是一个 set 对象或者是其子类型的实例则返回真值。
  • int PyFrozenSet_Check(PyObject *p)
  • 如果 p 是一个 frozenset 对象或者是其子类型的实例则返回真值。
  • int PyAnySet_Check(PyObject *p)
  • 如果 p 是一个 set 对象、frozenset 对象或者是其子类型的实例则返回真值。
  • int PyAnySet_CheckExact(PyObject *p)
  • 如果 p 是一个 set 对象或 frozenset 对象但不是其子类型的实例则返回真值。
  • int PyFrozenSet_CheckExact(PyObject *p)
  • 如果 p 是一个 frozenset 对象但不是其子类型的实例则返回真值。
  • PyObject* PySet_New(PyObject *iterable)
  • Return value: New reference.返回一个新的 set,其中包含 iterable 所返回的对象。 iterable 可以为 NULL 表示创建一个新的空集合。成功时返回新的集合,失败时返回 NULL。如果 iterable 实际上不是可迭代对象则引发 TypeError。该构造器也适用于拷贝集合 (c=set(s))。
  • PyObject* PyFrozenSet_New(PyObject *iterable)
  • Return value: New reference.返回一个新的 frozenset,其中包含 iterable 所返回的对象。 iterable 可以为 NULL 表示创建一个新的空冻结集合。成功时返回新的冻结集合,失败时返回 NULL。如果 iterable 实际上不是可迭代对象则引发 TypeError
下列函数和宏适用于  set 或  frozenset 的实例或是其子类型的实例。
  • Py_ssize_t PySet_Size(PyObject *anyset)
  • 返回 set 或 frozenset 对象的长度。等价于 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__() 方法,此函数不会自动将不可哈希的集合转换为临时的冻结集合。如果 key 为不可哈希对象则会引发 TypeError。如果 anyset 不是 setfrozenset 或其子类型的实例则会引发 PyExc_SystemError
  • int PySet_Add(PyObject *set, PyObject *key)
  • 添加 key 到一个 set 实例。也可用于 frozenset 实例(类似于 PyTuple_SetItem(),它可被用来为全新冻结集合在公开给其他代码之前填充全新的值)。成功时返回 0,失败时返回 -1。如果 key 为不可哈希对象则会引发 TypeError。如果没有增长空间则会引发 MemoryError。如果 set 不是 set 或其子类型的实例则会引发 SystemError
下列函数适用于  set 或其子类型的实例,但不可用于  frozenset 或其子类型的实例。
  • int PySet_Discard(PyObject *set, PyObject *key)
  • 如果找到并移除返回 1,如果未找到(无操作)返回 0,如果遇到错误则返回 -1。对于不存在的键不会引发 KeyError。如果 key 为不可哈希对象则会引发 TypeError。不同于 Python discard() 方法,此函数不会自动将不可哈希的集合转换为临时的冻结集合。如果 set 不是 set 或其子类型的实例则会引发 PyExc_SystemError
  • PyObject* PySet_Pop(PyObject *set)
  • Return value: New reference.返回 set 中任意对象的新引用,并从 set 中移除该对象。失败时返回 NULL。如果集合为空则会引发 KeyError。如果 set 不是 set 或其子类型的实例则会引发 SystemError
  • int PySet_Clear(PyObject *set)
  • 清空现有字典的所有键值对。
  • int PySet_ClearFreeList()
  • 清空释放列表。返回所释放的条目数。3.3 新版功能.

56c4cee1e9acfd3ff1a318dbe2c339f6.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值