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

type PyTupleObject

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

PyTypeObject PyTuple_Type
Part of the Stable ABI.

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

int PyTuple_Check(PyObject *p)

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

int PyTuple_CheckExact(PyObject *p)

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

PyObject *PyTuple_New(Py_ssize_t len)
Return value: New reference. Part of the Stable ABI.

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

PyObject *PyTuple_Pack(Py_ssize_t n, ...)
Return value: New reference. Part of the Stable 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 Stable ABI.

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

Py_ssize_t PyTuple_GET_SIZE(PyObject *p)

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

PyObject *PyTuple_GetItem(PyObject *p, Py_ssize_t pos)
Return value: Borrowed reference. Part of the Stable ABI.

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

PyObject *PyTuple_GET_ITEM(PyObject *p, Py_ssize_t pos)
Return value: Borrowed reference.

Аналогично PyTuple_GetItem(), но не проверяет аргументы.

PyObject *PyTuple_GetSlice(PyObject *p, Py_ssize_t low, Py_ssize_t high)
Return value: New reference. Part of the Stable ABI.

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

int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)
Part of the Stable ABI.

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

Примечание

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

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

Подобен 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 - это эквивалент объектов namedtuple() на языке C, т.е. последовательность, к элементам которой также можно получить доступ через атрибуты. Чтобы создать последовательность struct, сначала необходимо создать определенный тип последовательности struct.

PyTypeObject *PyStructSequence_NewType(PyStructSequence_Desc *desc)
Return value: New reference. Part of the Stable ABI.

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

void PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)

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

int PyStructSequence_InitType2(PyTypeObject *type, PyStructSequence_Desc *desc)

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

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

type PyStructSequence_Desc
Part of the Stable ABI (including all members).

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

Поле

C Тип

Значение

name

const char *

имя типа последовательности struct

doc

const char *

указатель на строку docstring для типа или NULL для опускания

fields

PyStructSequence_Field *

указатель на ``NULL``законченный массив с именами полей нового типа

n_in_sequence

int

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

type PyStructSequence_Field
Part of the Stable ABI (including all members).

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

Поле

C Тип

Значение

name

const char *

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

doc

const char *

поле docstring или NULL, чтобы опустить

const char *const PyStructSequence_UnnamedField

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

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

PyObject *PyStructSequence_New(PyTypeObject *type)
Return value: New reference. Part of the Stable ABI.

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

PyObject *PyStructSequence_GetItem(PyObject *p, Py_ssize_t pos)
Return value: Borrowed reference. Part of the Stable ABI.

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

PyObject *PyStructSequence_GET_ITEM(PyObject *p, Py_ssize_t pos)
Return value: Borrowed reference.

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

void PyStructSequence_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)
Part of the Stable ABI.

Устанавливает поле с индексом pos последовательности struct p в значение o. Как и PyTuple_SET_ITEM(), это следует использовать только для заполнения совершенно новых экземпляров.

Примечание

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

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

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

Примечание

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

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