Установить объекты¶
В этом разделе подробно описывается публичный API для объектов set и frozenset. Для доступа к любым функциям, не перечисленным ниже, лучше всего использовать либо абстрактный протокол объектов (включая PyObject_CallMethod(), PyObject_RichCompareBool(), PyObject_Hash(), PyObject_Repr(), PyObject_IsTrue(), : c:func: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, представляющий тип Pythonset.
-
PyTypeObject
PyFrozenSet_Type¶ - Part of the Stable 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)¶ - 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для создания нового пустого набора frozenset. Возвращает новый набор в случае успеха илиNULLв случае неудачи. ВызовTypeError, если iterable не является итерируемым.
Следующие функции и макросы доступны для экземпляров set или frozenset или экземпляров их подтипов.
-
Py_ssize_t
PySet_Size(PyObject *anyset)¶ - Part of the Stable ABI.
Возвращает длину объекта
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)¶ - Part of the Stable ABI.
Возвращает
1, если найдено,0, если не найдено, и-1, если возникла ошибка. В отличие от метода Python__contains__(), эта функция не преобразует автоматически нехешируемые множества во временные фростенсеты. Вызывает ошибкуTypeError, если ключ является нехешируемым. ВызовPyExc_SystemError, если anyset не являетсяset,frozensetили экземпляром подтипа.
-
int
PySet_Add(PyObject *set, PyObject *key)¶ - Part of the Stable ABI.
Добавляет ключ к экземпляру
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.
Возвращает
1, если найден и удален,0, если не найден (никаких действий не предпринимается), и-1, если возникла ошибка. Не выдаетKeyErrorдля отсутствующих ключей. ВызываетTypeError, если ключ не поддается хэшированию. В отличие от метода Pythondiscard(), эта функция не преобразует автоматически нехешируемые множества во временные фрозенсеты. ВызовPyExc_SystemError, если set не является экземпляромsetили его подтипом.
-
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.
Опустошить существующий набор всех элементов.