tuple.md
1> **Источник:** https://python-all.ru/2.6/c-api/tuple.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Объекты кортежей89**`PyTupleObject`**1011Этот подтип1213[`PyObject`](https://python-all.ru/2.6/c-api/structures.html#PyObject)1415представляет объект кортежа Python.1617**[PyTypeObject](https://python-all.ru/2.6/c-api/type.html#PyTypeObject) `PyTuple_Type`**1819Этот экземпляр [`PyTypeObject`](https://python-all.ru/2.6/c-api/type.html#PyTypeObject) представляет тип кортежа Python; это tот же объект, что и `tuple` и `types.TupleType` на уровне Python..2021**int `PyTuple_Check`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*p*)**2223Возвращает истину, если *p* является объектом кортежа или экземпляром подтипа типа tuple type.2425Изменено в версии 2.2: Теперь допускаются подтипы.2627**int `PyTuple_CheckExact`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*p*)**2829Возвращает истину, если *p* является объектом кортежа, но не экземпляром подтипа tuple type.3031Новое в версии 2.2.3233**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyTuple_New`(Py\_ssize\_t *len*)**3435*Возвращаемое значение: новая ссылка.*3637Возвращает новый объект-кортеж размера *len* или *NULL* в случае ошибки.3839Изменено в версии 2.5: Ранее эта функция использовала тип `int` для параметра *len*. Это может потребовать изменений в коде для корректной поддержки 64-битных систем.4041**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyTuple_Pack`(Py\_ssize\_t *n*, ...)**4243*Возвращаемое значение: новая ссылка.*4445Возвращает новый объект кортежа размера *n* или *NULL* при ошибке. Значения кортежа инициализируются последующими *n* аргументами C, указывающими на объекты Python. `PyTuple_Pack(2, a, b)` эквивалентно `Py_BuildValue("(OO)", a, b)`.4647Новое в версии 2.4.4849Изменено в версии 2.5: Ранее эта функция использовала тип `int` для параметра *n*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.5051**Py\_ssize\_t `PyTuple_Size`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*p*)**5253Принимает указатель на объект кортежа и возвращает размер этого кортежа.5455Изменено в версии 2.5: Ранее эта функция возвращала значение типа `int`. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.5657**Py\_ssize\_t `PyTuple_GET_SIZE`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*p*)**5859Возвращает размер кортежа *p*, который не должен быть *NULL* и должен указывать на кортеж; проверка ошибок не выполняется.6061Изменено в версии 2.5: Ранее эта функция возвращала значение типа `int`. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.6263**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyTuple_GetItem`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*p*, Py\_ssize\_t *pos*)**6465*Возвращаемое значение: заимствованная ссылка.*6667Возвращает объект в позиции *pos* в кортеже, на который указывает *p*. Если *pos* выходит за границы, возвращает *NULL* и устанавливает исключение [`IndexError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.IndexError).6869Изменено в версии 2.5: Ранее эта функция использовала тип `int` для параметра *pos*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.7071**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyTuple_GET_ITEM`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*p*, Py\_ssize\_t *pos*)**7273*Возвращаемое значение: заимствованная ссылка.*7475Как [`PyTuple_GetItem()`](https://python-all.ru/2.6/c-api/tuple.html#PyTuple_GetItem), но не проверяет свои аргументы.7677Изменено в версии 2.5: Ранее эта функция использовала тип `int` для параметра *pos*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.7879**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyTuple_GetSlice`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*p*, Py\_ssize\_t *low*, Py\_ssize\_t *high*)**8081*Возвращаемое значение: новая ссылка.*8283Извлекает срез кортежа, на который указывает *p*, от *low* до *high* и возвращает его в виде нового кортежа.8485Изменено в версии 2.5: Ранее эта функция использовала тип `int` для параметров *low* и *high*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.8687**int `PyTuple_SetItem`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*p*, Py\_ssize\_t *pos*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**8889Вставляет ссылку на объект *o* в позицию *pos* кортежа, на который указывает *p*. Возвращает `0` в случае успеха.9091> **Примечание**92>93> Эта функция «крадёт» ссылку на *o*.9495Изменено в версии 2.5: Ранее эта функция использовала тип `int` для параметра *pos*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.9697**void `PyTuple_SET_ITEM`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*p*, Py\_ssize\_t *pos*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**9899Как [`PyTuple_SetItem()`](https://python-all.ru/2.6/c-api/tuple.html#PyTuple_SetItem), но не проверяет ошибки и должен *только* использоваться для заполнения совершенно новых кортежей.100101> **Примечание**102>103> Эта функция «крадёт» ссылку на *o*.104105Изменено в версии 2.5: Ранее эта функция использовала тип `int` для параметра *pos*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.106107**int `_PyTuple_Resize`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*\*p*, Py\_ssize\_t *newsize*)**108109Can 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/2.6/library/exceptions.html#exceptions.MemoryError) or [`SystemError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.SystemError).110111Изменено в версии 2.2: Удалён неиспользуемый третий параметр, *last\_is\_sticky*.112113Изменено в версии 2.5: Эта функция использовала тип `int` для *newsize*. Это может потребовать изменений в коде для корректной поддержки 64-битных систем.114115**int `PyTuple_ClearFreeList`()**116117Очищает список свободных элементов. Возвращает общее количество освобождённых элементов.118119Новое в версии 2.6.120