Документация Python неофициальный перевод

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

PyTupleObject

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

PyTypeObject PyTuple_Type

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

int PyTuple_Check(PyObject *p)

Возвращает истину, если p является объектом кортежа или экземпляром подтипа типа tuple type.

Изменено в версии 2.2: Теперь допускаются подтипы.

int PyTuple_CheckExact(PyObject *p)

Возвращает истину, если p является объектом кортежа, но не экземпляром подтипа tuple type.

Новое в версии 2.2.

PyObject* PyTuple_New(Py_ssize_t len)
Возвращаемое значение: новая ссылка.

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

Изменено в версии 2.5: Эта функция использовала тип int для len. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.

PyObject* PyTuple_Pack(Py_ssize_t n, ...)
Возвращаемое значение: новая ссылка.

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

Новое в версии 2.4.

Изменено в версии 2.5: Эта функция использовала тип int для n. Это может потребовать изменений в коде для корректной поддержки 64-битных систем.

Py_ssize_t PyTuple_Size(PyObject *p)

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

Изменено в версии 2.5: Эта функция возвращала тип int. Возможно, потребуется внести изменения в код для корректной поддержки 64-битных систем.

Py_ssize_t PyTuple_GET_SIZE(PyObject *p)

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

Изменено в версии 2.5: Эта функция возвращала тип int. Возможно, потребуется внести изменения в код для корректной поддержки 64-битных систем.

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

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

Изменено в версии 2.5: Эта функция использовала тип int для pos. Это может потребовать изменений в коде для корректной поддержки 64-битных систем.

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

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

Изменено в версии 2.5: Эта функция использовала тип int для pos. Это может потребовать изменений в коде для корректной поддержки 64-битных систем.

PyObject* PyTuple_GetSlice(PyObject *p, Py_ssize_t low, Py_ssize_t high)
Возвращаемое значение: новая ссылка.

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

Изменено в версии 2.5: Эта функция использовала тип int для low и high. Это может потребовать изменений в коде для корректной поддержки 64-битных систем.

int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)

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

Примечание

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

Изменено в версии 2.5: Эта функция использовала тип int для pos. Это может потребовать изменений в коде для корректной поддержки 64-битных систем.

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

Как PyTuple_SetItem(), но без проверки ошибок; должен использоваться только для заполнения только что созданных кортежей.

Примечание

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

Изменено в версии 2.5: Эта функция использовала тип int для pos. Это может потребовать изменений в коде для корректной поддержки 64-битных систем.

int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize)

Can be used to resize a tuple. newsize will be the new length of the tuple. Because tuples are supposed to be immutable, this should only be used if there is only one reference to the object. Do not use this if the tuple may already be known to some other part of the code. The tuple will always grow or shrink at the end. Think of this as destroying the old tuple and creating a new one, only more efficiently. Returns 0 on success. Client code should never assume that the resulting value of *p will be the same as before calling this function. If the object referenced by *p is replaced, the original *p is destroyed. On failure, returns -1 and sets *p to NULL, and raises MemoryError or SystemError.

Изменено в версии 2.2: Удалён неиспользуемый третий параметр, last_is_sticky.

Изменено в версии 2.5: Эта функция использовала тип int для newsize. Возможно, потребуются изменения в вашем коде для корректной поддержки 64-битных систем.

int PyTuple_ClearFreeList()

Очищает список свободных элементов. Возвращает общее количество освобождённых элементов.

Новое в версии 2.6.