Объекты кортежей

type PyTupleObject

Этот подтип PyObject представляет объект кортежа Python.

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

Этот экземпляр PyTypeObject представляет тип кортежа Python; это тот же объект, что и tuple на уровне Python.

int PyTuple_Check(PyObject *p)

Возвращает значение true, если p является объектом tuple или экземпляром подтипа типа tuple. Эта функция всегда выполняется успешно.

int PyTuple_CheckExact(PyObject *p)

Возвращает значение true, если p является объектом tuple, но не экземпляром подтипа типа tuple. Эта функция всегда выполняется успешно.

PyObject *PyTuple_New(Py_ssize_t len)
Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.

Возвращает новый объект-кортеж размером len или NULL в случае сбоя.

PyObject *PyTuple_Pack(Py_ssize_t n, ...)
Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.

Возвращает новый объект кортежа размером n или NULL в случае сбоя. Значения кортежа инициализируются последующими аргументами n C, указывающими на объекты Python. PyTuple_Pack(2, a, b) эквивалентно Py_BuildValue("(OO)", a, b).

Py_ssize_t PyTuple_Size(PyObject *p)
Part of the Стабильный ABI.

Возьмите указатель на объект кортежа и верните размер этого кортежа.

Py_ssize_t PyTuple_GET_SIZE(PyObject *p)

Возвращает размер кортежа p, который должен быть не``NULL`` и указывать на кортеж; проверка ошибок не выполняется.

PyObject *PyTuple_GetItem(PyObject *p, Py_ssize_t pos)
Возвращаемое значение: Заимствованная ссылка. Part of the Стабильный ABI.

Возвращает объект в позиции pos в кортеже, на который указывает p. Если значение pos отрицательное или выходит за пределы допустимых значений, возвращает NULL и устанавливает исключение IndexError.

PyObject *PyTuple_GET_ITEM(PyObject *p, Py_ssize_t pos)
Возвращаемое значение: Заимствованная ссылка.

Например PyTuple_GetItem(), но не проверяет свои аргументы.

PyObject *PyTuple_GetSlice(PyObject *p, Py_ssize_t low, Py_ssize_t high)
Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.

Возвращает фрагмент кортежа, на который указывает p между low и high, или NULL в случае сбоя. Это эквивалент выражения Python p[low:high]. Индексация с конца списка не поддерживается.

int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)
Part of the Стабильный ABI.

Вставьте ссылку на объект o в позицию pos кортежа, на который указывает p. В случае успеха верните 0. Если значение pos выходит за рамки допустимого, верните -1 и задайте исключение IndexError.

Примечание

Эта функция «крадет» ссылку на o и отбрасывает ссылку на элемент, который уже находится в кортеже в соответствующей позиции.

void PyTuple_SET_ITEM(PyObject *p, Py_ssize_t pos, PyObject *o)

Например : c:func:PyTuple_SetItem, но не проверяет ошибки и должен использоваться только для заполнения совершенно новых кортежей.

Примечание

Эта функция «крадет» ссылку на o и, в отличие от PyTuple_SetItem(), не удаляет ссылку на какой-либо заменяемый элемент; любая ссылка в кортеже в позиции pos будет пропущена.

int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize)

Может использоваться для изменения размера кортежа. newsize будет новой длиной кортежа. Поскольку кортежи должны быть неизменяемыми, это значение следует использовать только в том случае, если имеется только одна ссылка на объект. Не используйте это, если кортеж может быть уже известен какой-либо другой части кода. Кортеж всегда будет увеличиваться или уменьшаться в конце. Думайте об этом как об уничтожении старого кортежа и создании нового, только более эффективно. Возвращает 0 в случае успешного выполнения. Клиентский код никогда не должен предполагать, что результирующее значение *p будет таким же, как и до вызова этой функции. Если объект, на который ссылается *p, заменяется, исходный *p уничтожается. В случае сбоя возвращает -1 и устанавливает для *p значение NULL, а затем возвращает значение MemoryError или SystemError.

Объекты структурной последовательности

Объекты Struct sequence на языке Си эквивалентны объектам namedtuple(), т.е. последовательности, к элементам которой также можно получить доступ через атрибуты. Чтобы создать struct sequence, сначала необходимо создать определенный тип struct sequence.

PyTypeObject *PyStructSequence_NewType(PyStructSequence_Desc *desc)
Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.

Создайте новый структурный тип последовательности из данных в desc, описанных ниже. Экземпляры результирующего типа могут быть созданы с помощью PyStructSequence_New().

void PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)

Инициализирует структурную последовательность типа type из desc на месте.

int PyStructSequence_InitType2(PyTypeObject *type, PyStructSequence_Desc *desc)

То же, что и PyStructSequence_InitType, но возвращает 0 в случае успеха и -1 в случае неудачи.

Добавлено в версии 3.4.

type PyStructSequence_Desc
Part of the Стабильный ABI (including all members).

Содержит метаинформацию типа struct sequence для создания.

const char *name

Имя типа структурной последовательности.

const char *doc

Указатель на строку документации для типа или NULL, который нужно опустить.

PyStructSequence_Field *fields

Указатель на NULL-завершенный массив с именами полей нового типа.

int n_in_sequence

Количество полей, видимых на стороне Python (если используется в качестве кортежа).

type PyStructSequence_Field
Part of the Стабильный ABI (including all members).

Описывает поле структурной последовательности. Поскольку структурная последовательность моделируется как кортеж, все поля вводятся следующим образом PyObject*. Индекс в массиве fields из массива PyStructSequence_Desc определяет, какое поле структурной последовательности описано.

const char *name

Имя для поля или NULL чтобы завершить список именованных полей, установите значение PyStructSequence_UnnamedField, чтобы оставить безымянным.

const char *doc

Поле docstring или NULL опустить.

const char *const PyStructSequence_UnnamedField
Part of the Стабильный ABI since version 3.11.

Специальное значение для имени поля, позволяющее оставить его безымянным.

Изменено в версии 3.9: Тип был изменен с char *.

PyObject *PyStructSequence_New(PyTypeObject *type)
Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.

Создает экземпляр type, который должен был быть создан с помощью PyStructSequence_NewType().

PyObject *PyStructSequence_GetItem(PyObject *p, Py_ssize_t pos)
Возвращаемое значение: Заимствованная ссылка. Part of the Стабильный ABI.

Возвращает объект в позицию pos в последовательности структур, на которую указывает p. Проверка границ не выполняется.

PyObject *PyStructSequence_GET_ITEM(PyObject *p, Py_ssize_t pos)
Возвращаемое значение: Заимствованная ссылка.

Макроэквивалент PyStructSequence_GetItem().

void PyStructSequence_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)
Part of the Стабильный ABI.

Присваивает полю с индексом pos последовательности структур p значение o. Например, c:func:PyTuple_SET_ITEM, это должно использоваться только для заполнения совершенно новых экземпляров.

Примечание

Эта функция «крадет» ссылку на o.

void PyStructSequence_SET_ITEM(PyObject *p, Py_ssize_t *pos, PyObject *o)

Аналогично PyStructSequence_SetItem(), но реализован как статическая встроенная функция.

Примечание

Эта функция «крадет» ссылку на o.

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