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

tuple.md

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

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