Устанавливайте объекты

В этом разделе подробно описывается общедоступный 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, представляющий тип Python set.

PyTypeObject PyFrozenSet_Type
Part of the Стабильный ABI.

Это экземпляр PyTypeObject, представляющий тип Python frozenset.

Следующие макросы проверки типа работают с указателями на любой объект 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, если ключ недоступен для хэширования. В отличие от метода Python discard(), эта функция не преобразует автоматически недоступные наборы данных во временные замороженные наборы. Поднимите 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 или его подтипом.

Вернуться на верх