Набір об’єктів¶
У цьому розділі детально описано публічний API для об’єктів set і frozenset. Будь-які функції, не перелічені нижче, найкраще отримати доступ за допомогою протоколу абстрактних об’єктів (включно з 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()).
-
type PySetObject¶
Цей підтип
PyObjectвикористовується для зберігання внутрішніх даних для об’єктівsetіfrozenset. Це схоже наPyDictObjectтим, що він має фіксований розмір для невеликих наборів (подібно до сховища кортежів) і вказуватиме на окремий блок пам’яті змінного розміру для середніх і великих наборів (подібно списку зберігання). Жодне з полів цієї структури не можна вважати відкритим, і всі можуть бути змінені. Весь доступ має здійснюватися через задокументований API, а не шляхом маніпулювання значеннями в структурі.
-
PyTypeObject PySet_Type¶
- Part of the Stable ABI.
Це екземпляр
PyTypeObject, що представляє типsetPython.
-
PyTypeObject PyFrozenSet_Type¶
- Part of the Stable ABI.
Це екземпляр
PyTypeObject, що представляє типfrozensetPython.
Наступні макроси перевірки типу працюють з покажчиками на будь-який об’єкт Python. Подібним чином функції конструктора працюють з будь-яким ітерованим об’єктом Python.
-
int PySet_Check(PyObject *p)¶
Повертає true, якщо p є об’єктом
setабо екземпляром підтипу. Ця функція завжди успішна.
-
int PyFrozenSet_Check(PyObject *p)¶
Повертає true, якщо p є об’єктом
frozensetабо екземпляром підтипу. Ця функція завжди успішна.
-
int PyAnySet_Check(PyObject *p)¶
Повертає true, якщо p є об’єктом
set, об’єктомfrozensetабо екземпляром підтипу. Ця функція завжди успішна.
-
int PySet_CheckExact(PyObject *p)¶
Повертає true, якщо p є об’єктом
set, але не екземпляром підтипу. Ця функція завжди успішна.Added in version 3.10.
-
int PyAnySet_CheckExact(PyObject *p)¶
Повертає true, якщо p є об’єктом
setабо об’єктомfrozenset, але не екземпляром підтипу. Ця функція завжди успішна.
-
int PyFrozenSet_CheckExact(PyObject *p)¶
Повертає true, якщо p є об’єктом
frozenset, але не є екземпляром підтипу. Ця функція завжди успішна.
-
PyObject *PySet_New(PyObject *iterable)¶
- Return value: New reference. Part of the Stable ABI.
Повертає новий
set, що містить об’єкти, повернуті iterable. Iterable може бутиNULLдля створення нового порожнього набору. Повертає новий набір у разі успіху абоNULLу разі невдачі. ВикликатиTypeError, якщо iterable насправді не можна ітерувати. Конструктор також корисний для копіювання набору (c=set(s)).
-
PyObject *PyFrozenSet_New(PyObject *iterable)¶
- Return value: New reference. Part of the Stable ABI.
Повертає новий
frozenset, що містить об’єкти, повернуті iterable. Iterable може бутиNULLдля створення нового порожнього замороженого набору. Повертає новий набір у разі успіху абоNULLу разі невдачі. ВикликатиTypeError, якщо iterable насправді не можна ітерувати.
Наступні функції та макроси доступні для екземплярів set або frozenset або екземплярів їхніх підтипів.
-
Py_ssize_t PySet_Size(PyObject *anyset)¶
- Part of the Stable ABI.
Return the length of a
setorfrozensetobject. Equivalent tolen(anyset). Raises aSystemErrorif anyset is not aset,frozenset, or an instance of a subtype.
-
Py_ssize_t PySet_GET_SIZE(PyObject *anyset)¶
Макроформа
PySet_Size()без перевірки помилок.
-
int PySet_Contains(PyObject *anyset, PyObject *key)¶
- Part of the Stable ABI.
Return
1if found,0if not found, and-1if an error is encountered. Unlike the Python__contains__()method, this function does not automatically convert unhashable sets into temporary frozensets. Raise aTypeErrorif the key is unhashable. RaiseSystemErrorif anyset is not aset,frozenset, or an instance of a subtype.
-
int PySet_Add(PyObject *set, PyObject *key)¶
- Part of the Stable ABI.
Додайте key до екземпляра
set. Також працює з екземплярамиfrozenset(наприклад,PyTuple_SetItem(), його можна використовувати для заповнення значень абсолютно нових заморожених наборів перед тим, як вони будуть представлені в іншому коді). Повертає0у разі успіху або-1у разі невдачі. ВикликатиTypeError, якщо ключ не хешується. ВикликайтеMemoryError, якщо немає місця для зростання. ВикликатиSystemError, якщо set не є екземпляромsetабо його підтипу.
Наступні функції доступні для екземплярів set або його підтипів, але не для екземплярів frozenset або його підтипів.
-
int PySet_Discard(PyObject *set, PyObject *key)¶
- Part of the Stable ABI.
Return
1if found and removed,0if not found (no action taken), and-1if an error is encountered. Does not raiseKeyErrorfor missing keys. Raise aTypeErrorif the key is unhashable. Unlike the Pythondiscard()method, this function does not automatically convert unhashable sets into temporary frozensets. RaiseSystemErrorif set is not an instance ofsetor its subtype.
-
PyObject *PySet_Pop(PyObject *set)¶
- Return value: New reference. Part of the Stable ABI.
Повертає нове посилання на довільний об’єкт у set та видаляє об’єкт із set. Повертає
NULLу разі помилки. ВикликатиKeyError, якщо набір порожній. ВикликатиSystemError, якщо set не є екземпляромsetабо його підтипу.
-
int PySet_Clear(PyObject *set)¶
- Part of the Stable ABI.
Empty an existing set of all elements. Return
0on success. Return-1and raiseSystemErrorif set is not an instance ofsetor its subtype.