Устанавливайте объекты¶
В этом разделе подробно описывается общедоступный API для объектов set и frozenset. Доступ к любым функциям, не перечисленным ниже, лучше всего осуществлять с помощью протокола абстрактных объектов (включая : c:func: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. Это похоже на a : c:type:PyDictObject в том смысле, что это фиксированный размер для небольших наборов (очень похоже на хранилище кортежей) и будет указывать на отдельный блок памяти переменного размера для наборов среднего и большого размера (очень похоже на хранилище списков). Ни одно из полей этой структуры не должно считаться общедоступным, и все они могут быть изменены. Весь доступ должен осуществляться через документированный API, а не путем манипулирования значениями в структуре.
-
PyTypeObject PySet_Type¶
- Part of the Стабильный ABI.
Это экземпляр
PyTypeObject, представляющий тип Pythonset.
-
PyTypeObject PyFrozenSet_Type¶
- Part of the Стабильный ABI.
Это экземпляр
PyTypeObject, представляющий тип Pythonfrozenset.
Следующие макросы проверки типа работают с указателями на любой объект 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, но не экземпляром подтипа. Эта функция всегда выполняется успешно.Добавлено в версии 3.10.
-
int PyAnySet_CheckExact(PyObject *p)¶
Возвращает значение true, если p является объектом
setили объектомfrozenset, но не является экземпляром подтипа. Эта функция всегда выполняется успешно.
-
int PyFrozenSet_CheckExact(PyObject *p)¶
Возвращает значение true, если p является объектом
frozenset, но не экземпляром подтипа. Эта функция всегда выполняется успешно.
-
PyObject *PySet_New(PyObject *iterable)¶
- Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.
Возвращает новый
set, содержащий объекты, возвращаемые iterable. Значение iterable может бытьNULLдля создания нового пустого набора. Возвращает новый набор в случае успеха илиNULLв случае сбоя. ПоднимитеTypeError, если iterable на самом деле не является повторяемым. Конструктор также полезен для копирования набора (c=set(s)).
-
PyObject *PyFrozenSet_New(PyObject *iterable)¶
- Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.
Возвращает новый
frozenset, содержащий объекты, возвращаемые iterable. Значение iterable может бытьNULLдля создания нового пустого frozenset. Верните новый набор в случае успеха илиNULLв случае неудачи. Увеличьте значениеTypeError, если iterable на самом деле не является повторяемым.
Следующие функции и макросы доступны для экземпляров set или frozenset или экземпляров их подтипов.
-
Py_ssize_t PySet_Size(PyObject *anyset)¶
- Part of the Стабильный ABI.
Возвращает длину объекта
setилиfrozenset. Эквивалентноlen(anyset). ВыдаетSystemError, если anyset не являетсяset,frozenset, или экземпляром подтипа.
-
Py_ssize_t PySet_GET_SIZE(PyObject *anyset)¶
Макро-форма
PySet_Size()без проверки ошибок.
-
int PySet_Contains(PyObject *anyset, PyObject *key)¶
- Part of the Стабильный ABI.
Возвращает
1, если найдено,0, если не найдено, и-1, если обнаружена ошибка. В отличие от метода Python__contains__(), эта функция автоматически не преобразует недоступные для хэширования наборы во временные замороженные наборы. ПоднимитеTypeError, если ключ недоступен для хэширования. ПоднимитеSystemError, если anyset не являетсяset,frozenset, или экземпляром подтипа.
-
int PySet_Add(PyObject *set, PyObject *key)¶
- Part of the Стабильный ABI.
Добавьте key к экземпляру
set. Также работает с экземплярамиfrozenset(например, c:func:PyTuple_SetItem его можно использовать для заполнения значений совершенно новых замороженных наборов до того, как они будут обработаны другим кодом). Верните0в случае успеха или-1в случае неудачи. Поднимите значениеTypeError, если ключ недоступен для хеширования. Поднимите значениеMemoryError, если нет возможности для увеличения. СоздайтеSystemError, если set не является экземпляромsetили его подтипом.
Следующие функции доступны для экземпляров set или его подтипов, но не для экземпляров frozenset или его подтипов.
-
int PySet_Discard(PyObject *set, PyObject *key)¶
- Part of the Стабильный ABI.
Возвращает
1, если найдено и удалено,0, если не найдено (никаких действий не предпринято), и-1, если обнаружена ошибка. Не вызываетKeyErrorдля отсутствующих ключей. ВызовитеTypeError, если ключ недоступен для хэширования. В отличие от метода Pythondiscard(), эта функция не преобразует автоматически недоступные наборы данных во временные замороженные наборы. ПоднимитеSystemError, если set не является экземпляромsetили его подтипом.
-
PyObject *PySet_Pop(PyObject *set)¶
- Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.
Возвращает новую ссылку на произвольный объект в set и удаляет объект из set. Возвращает
NULLв случае сбоя. УвеличиваетKeyError, если набор пуст. СоздайтеSystemError, если set не является экземпляромsetили его подтипом.
-
int PySet_Clear(PyObject *set)¶
- Part of the Стабильный ABI.
Очистите существующий набор от всех элементов. В случае успеха верните
0. Верните-1и вызовитеSystemError, если set не является экземпляромsetили его подтипом.