tuple.md · Markdown – Документация Python
Документация Python неофициальный перевод

tuple.md

162 строк · 6.7 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.1/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/3.1/c-api/structures.html#PyObject)1415представляет объект кортежа Python.1617**[PyTypeObject](https://python-all.ru/3.1/c-api/type.html#PyTypeObject) `PyTuple_Type`**1819Этот экземпляр2021[`PyTypeObject`](https://python-all.ru/3.1/c-api/type.html#PyTypeObject)2223представляет тип кортежа Python; это тот же объект, что и2425[`tuple`](https://python-all.ru/3.1/library/functions.html#tuple)2627в слое Python.2829**int `PyTuple_Check`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*p*)**3031Возвращает истину, если3233*p*3435является объектом кортежа или экземпляром подтипа типа tuple type.3637**int `PyTuple_CheckExact`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*p*)**3839Возвращает истину, если4041*p*4243является объектом кортежа, но не экземпляром подтипа tuple type.4445**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyTuple_New`(Py\_ssize\_t *len*)**4647*Возвращаемое значение: новая ссылка.*4849Возвращает новый объект-кортеж размера *len* или *NULL* в случае ошибки.5051**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyTuple_Pack`(Py\_ssize\_t *n*, ...)**5253*Возвращаемое значение: новая ссылка.*5455Возвращает новый объект кортежа размера *n* или *NULL* при ошибке. Значения кортежа инициализируются последующими *n* аргументами C, указывающими на объекты Python. `PyTuple_Pack(2, a, b)` эквивалентно `Py_BuildValue("(OO)", a, b)`.5657**Py\_ssize\_t `PyTuple_Size`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*p*)**5859Принимает указатель на объект кортежа и возвращает размер этого кортежа.6061**Py\_ssize\_t `PyTuple_GET_SIZE`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*p*)**6263Возвращает размер кортежа6465*p*6667, который не должен быть6869*NULL*7071и должен указывать на кортеж; проверка ошибок не выполняется.7273**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyTuple_GetItem`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*p*, Py\_ssize\_t *pos*)**7475*Возвращаемое значение: заимствованная ссылка.*7677Возвращает объект в позиции *pos* в кортеже, на который указывает *p*. Если *pos* выходит за границы, возвращает *NULL* и устанавливает исключение [`IndexError`](https://python-all.ru/3.1/library/exceptions.html#IndexError).7879**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyTuple_GET_ITEM`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*p*, Py\_ssize\_t *pos*)**8081*Возвращаемое значение: заимствованная ссылка.*8283Как [`PyTuple_GetItem()`](https://python-all.ru/3.1/c-api/tuple.html#PyTuple_GetItem), но не проверяет свои аргументы.8485**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyTuple_GetSlice`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*p*, Py\_ssize\_t *low*, Py\_ssize\_t *high*)**8687*Возвращаемое значение: новая ссылка.*8889Извлекает срез кортежа, на который указывает *p*, от *low* до *high* и возвращает его в виде нового кортежа.9091**int `PyTuple_SetItem`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*p*, Py\_ssize\_t *pos*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**9293Вставляет ссылку на объект *o* в позицию *pos* кортежа, на который указывает *p*. Возвращает `0` в случае успеха.9495> **Примечание**96>97> Эта функция «крадёт» ссылку на *o*.9899**void `PyTuple_SET_ITEM`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*p*, Py\_ssize\_t *pos*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**100101Как [`PyTuple_SetItem()`](https://python-all.ru/3.1/c-api/tuple.html#PyTuple_SetItem), но не проверяет ошибки и должен *только* использоваться для заполнения совершенно новых кортежей.102103> **Примечание**104>105> Эта функция «крадёт» ссылку на *o*.106107**int `_PyTuple_Resize`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*\*p*, Py\_ssize\_t *newsize*)**108109Can be used to resize a tuple.110111*newsize*112113will be the new length of the tuple. Because tuples are114115*supposed*116117to be immutable, this should only be used if there is only one reference to the object. Do118119*not*120121use 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. Returns122123`0`124125on success. Client code should never assume that the resulting value of126127`*p`128129will be the same as before calling this function. If the object referenced by130131`*p`132133is replaced, the original134135`*p`136137is destroyed. On failure, returns138139`-1`140141and sets142143`*p`144145to146147*NULL*148149, and raises150151[`MemoryError`](https://python-all.ru/3.1/library/exceptions.html#MemoryError)152153or154155[`SystemError`](https://python-all.ru/3.1/library/exceptions.html#SystemError)156157.158159**int `PyTuple_ClearFreeList`()**160161Очищает список свободных элементов. Возвращает общее количество освобождённых элементов.162