Устанавливайте объекты¶
В этом разделе подробно описывается общедоступный 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
или его подтипом.