> **Источник:** https://python-all.ru/3.0/c-api/tuple.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

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

**\[PyTupleObject\]`PyTupleObject`**

Этот подтип

[`PyObject`](https://python-all.ru/3.0/c-api/structures.html#PyObject)

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

**\[PyTuple\_Type\][PyTypeObject](https://python-all.ru/3.0/c-api/type.html#PyTypeObject) `PyTuple_Type`**

Этот экземпляр [`PyTypeObject`](https://python-all.ru/3.0/c-api/type.html#PyTypeObject) представляет тип кортежа Python; это tот же объект, что и `tuple` и `types.TupleType` на уровне Python..

**\[PyTuple\_Check\]int `PyTuple_Check`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*)**

Возвращает истину, если

*p*

является объектом кортежа или экземпляром подтипа типа tuple type.

**\[PyTuple\_CheckExact\]int `PyTuple_CheckExact`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*)**

Возвращает истину, если

*p*

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

**\[PyTuple\_New\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyTuple_New`(Py\_ssize\_t *len*)**

*Возвращаемое значение: новая ссылка.*

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

**\[PyTuple\_Pack\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyTuple_Pack`(Py\_ssize\_t *n*, ...)**

*Возвращаемое значение: новая ссылка.*

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

**\[PyTuple\_Size\]Py\_ssize\_t `PyTuple_Size`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*)**

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

**\[PyTuple\_GET\_SIZE\]Py\_ssize\_t `PyTuple_GET_SIZE`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*)**

Возвращает размер кортежа

*p*

, который не должен быть

*NULL*

и должен указывать на кортеж; проверка ошибок не выполняется.

**\[PyTuple\_GetItem\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyTuple_GetItem`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*, Py\_ssize\_t *pos*)**

*Возвращаемое значение: заимствованная ссылка.*

Возвращает объект в позиции *pos* в кортеже, на который указывает *p*. Если *pos* выходит за границы, возвращает *NULL* и устанавливает исключение [`IndexError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.IndexError).

**\[PyTuple\_GET\_ITEM\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyTuple_GET_ITEM`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*, Py\_ssize\_t *pos*)**

*Возвращаемое значение: заимствованная ссылка.*

Как [`PyTuple_GetItem`](https://python-all.ru/3.0/c-api/tuple.html#PyTuple_GetItem), но не проверяет свои аргументы.

**\[PyTuple\_GetSlice\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyTuple_GetSlice`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*, Py\_ssize\_t *low*, Py\_ssize\_t *high*)**

*Возвращаемое значение: новая ссылка.*

Извлекает срез кортежа, на который указывает *p*, от *low* до *high* и возвращает его в виде нового кортежа.

**\[PyTuple\_SetItem\]int `PyTuple_SetItem`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*, Py\_ssize\_t *pos*, [PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*o*)**

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

> **Примечание**
>
> Эта функция «крадёт» ссылку на *o*.

**\[PyTuple\_SET\_ITEM\]void `PyTuple_SET_ITEM`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*, Py\_ssize\_t *pos*, [PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*o*)**

Как [`PyTuple_SetItem`](https://python-all.ru/3.0/c-api/tuple.html#PyTuple_SetItem), но не проверяет ошибки и должен *только* использоваться для заполнения совершенно новых кортежей.

> **Примечание**
>
> Эта функция «крадёт» ссылку на *o*.

**\[\_PyTuple\_Resize\]int `_PyTuple_Resize`([PyObject](https://python-all.ru/3.0/c-api/structures.html#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`](https://python-all.ru/3.0/library/exceptions.html#exceptions.MemoryError)

or

[`SystemError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.SystemError)

.

**\[PyTuple\_ClearFreeList\]int `PyTuple_ClearFreeList`(void)**

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