设置对象 – 具体对象层(Python教程)(参考资料)
设置对象
本节详细介绍了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()).
PySetObjectPyObject的这个子类型用于保存set和frozenset对象的内部数据。就像一个PyDictObject因为对于小型集合来说它是一个固定的大小(很像元组存储),并且它将指向一个单独的,可变大小的内存块,用于中型和大型集合(很像列表存储)。这种结构的所有领域都不应被公认,并且可能会发生变化。所有访问都应该通过文档化的API完成,而不是通过操作结构中的值来完成.
- PyTypeObject
PyFrozenSet_Type - 这是
PyTypeObject代表Pythonfrozenset类型。
以下类型检查宏可用于指向任何Python对象的指针。同样,构造函数可以处理任何可迭代的Python对象.
- int
PyAnySet_Check(的PyObject *p) - 如果p是
set对象,frozenset对象或子类型的实例.
- int
PyAnySet_CheckExact(的PyObject *p) - 如果p是
set对象或frozenset对象但不是子类型的实例.
- int
PyFrozenSet_CheckExact(的PyObject *p) - 如果p是
frozenset对象但不是asubtype的实例.
- PyObject *
PySet_New(的PyObject *iterable) - Return value: New reference.
返回一个新的
set包含iterable返回的对象。iterable可能是NULL来创建一个新的空集。在失败时返回新设置onsuccess或NULL。举起TypeError如果iterable实际上是可迭代的。构造函数也可用于复制集合(c=set(s)).
- PyObject *
PyFrozenSet_New( PyObject *iterable) - Return value: New reference.
返回一个新的
frozenset包含iterable返回的对象.iterable可能是NULL创建一个新的空冻结集。成功时返回最新值或失败时返回NULL。如果TypeError实际上是不可迭代的话iterable举起
以下函数和宏可用于set或frozenset的实例或其子类的实例.
- Py_ssize_t
PySet_Size( PyObject *anyset) -
返回
set或frozenset宾语。相当于len(anyset)。如果PyExc_SystemError不是anyset,或者是子类型的实例,则会引发set,frozenset.
- Py_ssize_t
PySet_GET_SIZE( PyObject *anyset) PySet_Size()的宏形式,没有错误检查.
- int
PySet_Contains( PyObject *anyset,PyObject *key) - 返回
1如果找到,0如果没有找到,则-1如果遇到错误。Unlikethe Python__contains__()方法,此函数不会自动将不可用的集转换为临时的冻结集。如果TypeError不可用,请举起key。如果PyExc_SystemError不是anyset就举起set,frozenset,或子类的一个实例.
- int
PySet_Add( PyObject *set,PyObject *key) - 将key添加到
set实例中。也适用于frozenset实例(如PyTuple_SetItem()它可用于填写全新frozensets的值,然后再将其暴露给其他代码)。在失败时返回0onsuccess或-1。如果TypeError不可用,请举起key。举起MemoryError如果没有成长的空间。举起SystemError如果set不是set或者itssubtype.
以下功能适用于set或者它的子类型,但不适用于frozenset或其子类型的实例.
- int
PySet_Discard( PyObject *set,PyObject *key) - 返回
1如果找到并删除,0如果没有找到(没有采取任何行动),和-1如果遇到错误。不提出KeyError缺少钥匙。如果TypeError不可用,请举起key。与Pythondiscard()方法不同,此函数不会自动转换不可用的集合intotemporary frozensets。举起PyExc_SystemError如果set不是set或其子类型的实例.
- PyObject*
PySet_Pop( PyObject *set) - Return value: New reference.
返回对set中任意对象的新引用,并从set中删除对象。失败时返回NULL。如果这些是空的,请举起
KeyError。举起SystemError如果set不是set的实例或其子类型
- //int
PySet_Clear(PyObject *set) - 清空现有的所有元素.
- int
PySet_ClearFreeList() - 清除免费清单。返回已释放物品的总数.
3.3版本中的新品.
评论被关闭。