tuple.md
1> **Источник:** https://python-all.ru/3.0/c-api/tuple.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Объекты кортежей89**\[PyTupleObject\]`PyTupleObject`**1011Этот подтип1213[`PyObject`](https://python-all.ru/3.0/c-api/structures.html#PyObject)1415представляет объект кортежа Python.1617**\[PyTuple\_Type\][PyTypeObject](https://python-all.ru/3.0/c-api/type.html#PyTypeObject) `PyTuple_Type`**1819Этот экземпляр [`PyTypeObject`](https://python-all.ru/3.0/c-api/type.html#PyTypeObject) представляет тип кортежа Python; это tот же объект, что и `tuple` и `types.TupleType` на уровне Python..2021**\[PyTuple\_Check\]int `PyTuple_Check`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*)**2223Возвращает истину, если2425*p*2627является объектом кортежа или экземпляром подтипа типа tuple type.2829**\[PyTuple\_CheckExact\]int `PyTuple_CheckExact`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*)**3031Возвращает истину, если3233*p*3435является объектом кортежа, но не экземпляром подтипа tuple type.3637**\[PyTuple\_New\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyTuple_New`(Py\_ssize\_t *len*)**3839*Возвращаемое значение: новая ссылка.*4041Возвращает новый объект-кортеж размера *len* или *NULL* в случае ошибки.4243**\[PyTuple\_Pack\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyTuple_Pack`(Py\_ssize\_t *n*, ...)**4445*Возвращаемое значение: новая ссылка.*4647Возвращает новый объект кортежа размера *n* или *NULL* при ошибке. Значения кортежа инициализируются последующими *n* аргументами C, указывающими на объекты Python. `PyTuple_Pack(2, a, b)` эквивалентно `Py_BuildValue("(OO)", a, b)`.4849**\[PyTuple\_Size\]Py\_ssize\_t `PyTuple_Size`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*)**5051Принимает указатель на объект кортежа и возвращает размер этого кортежа.5253**\[PyTuple\_GET\_SIZE\]Py\_ssize\_t `PyTuple_GET_SIZE`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*)**5455Возвращает размер кортежа5657*p*5859, который не должен быть6061*NULL*6263и должен указывать на кортеж; проверка ошибок не выполняется.6465**\[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*)**6667*Возвращаемое значение: заимствованная ссылка.*6869Возвращает объект в позиции *pos* в кортеже, на который указывает *p*. Если *pos* выходит за границы, возвращает *NULL* и устанавливает исключение [`IndexError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.IndexError).7071**\[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*)**7273*Возвращаемое значение: заимствованная ссылка.*7475Как [`PyTuple_GetItem`](https://python-all.ru/3.0/c-api/tuple.html#PyTuple_GetItem), но не проверяет свои аргументы.7677**\[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*)**7879*Возвращаемое значение: новая ссылка.*8081Извлекает срез кортежа, на который указывает *p*, от *low* до *high* и возвращает его в виде нового кортежа.8283**\[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*)**8485Вставляет ссылку на объект *o* в позицию *pos* кортежа, на который указывает *p*. Возвращает `0` в случае успеха.8687> **Примечание**88>89> Эта функция «крадёт» ссылку на *o*.9091**\[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*)**9293Как [`PyTuple_SetItem`](https://python-all.ru/3.0/c-api/tuple.html#PyTuple_SetItem), но не проверяет ошибки и должен *только* использоваться для заполнения совершенно новых кортежей.9495> **Примечание**96>97> Эта функция «крадёт» ссылку на *o*.9899**\[\_PyTuple\_Resize\]int `_PyTuple_Resize`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*\*p*, Py\_ssize\_t *newsize*)**100101Can be used to resize a tuple.102103*newsize*104105will be the new length of the tuple. Because tuples are106107*supposed*108109to be immutable, this should only be used if there is only one reference to the object. Do110111*not*112113use 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. Returns114115`0`116117on success. Client code should never assume that the resulting value of118119`*p`120121will be the same as before calling this function. If the object referenced by122123`*p`124125is replaced, the original126127`*p`128129is destroyed. On failure, returns130131`-1`132133and sets134135`*p`136137to138139*NULL*140141, and raises142143[`MemoryError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.MemoryError)144145or146147[`SystemError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.SystemError)148149.150151**\[PyTuple\_ClearFreeList\]int `PyTuple_ClearFreeList`(void)**152153Очищает список свободных элементов. Возвращает общее количество освобождённых элементов.154