Spec-Zone.ru › Python 3.13

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

type PyTupleObject

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

PyTypeObject PyTuple_Type
Часть Стабильной ABI.

Этот экземпляр PyTypeObject представляет тип кортежа Python; он является тем же объектом, что и tuple на уровне Python.

int PyTuple_Check(PyObject *p)

Возвращает True, если p является объектом кортежа или экземпляром подтипа типа кортежа. Эта функция всегда завершается успешно.

int PyTuple_CheckExact(PyObject *p)

Возвращает True, если p является объектом кортежа, но не экземпляром подтипа типа кортежа. Эта функция всегда завершается успешно.

PyObject *PyTuple_New(Py_ssize_t len)
Значение возврата: Новая ссылка. Часть Стабильной ABI.

Возвращает новый объект кортежа размера len или NULL при возникновении исключения.

PyObject *PyTuple_Pack(Py_ssize_t n, ...)
Значение возврата: Новая ссылка. Часть Стабильной ABI.

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

Py_ssize_t PyTuple_Size(PyObject *p)
Часть Стабильной ABI.

Принимает указатель на объект кортежа и возвращает размер этого кортежа. В случае ошибки возвращает -1 и устанавливает исключение.

Py_ssize_t PyTuple_GET_SIZE(PyObject *p)

Аналогично PyTuple_Size(), но без проверки ошибок.

PyObject *PyTuple_GetItem(PyObject *p, Py_ssize_t pos)
Значение возврата: Заимствованная ссылка. Часть Стабильной ABI.

Возвращает объект в позиции pos в кортеже, на который указывает p. Если pos отрицательный или выходит за пределы, возвращает NULL и устанавливает исключение IndexError.

Возвращаемая ссылка заимствуется у кортежа p (то есть: она действительна только до тех пор, пока у вас есть ссылка на p). Для получения сильной ссылки используйте Py_NewRef(PyTuple_GetItem(...)) или PySequence_GetItem().

PyObject *PyTuple_GET_ITEM(PyObject *p, Py_ssize_t pos)
Значение возврата: Заимствованная ссылка.

Аналогично PyTuple_GetItem(), но без проверки аргументов.

PyObject *PyTuple_GetSlice(PyObject *p, Py_ssize_t low, Py_ssize_t high)
Значение возврата: Новая ссылка. Часть Стабильной ABI.

Возвращает срез кортежа, на который указывает p, между low и high, или NULL при возникновении исключения.

Это эквивалентно выражению Python p[low:high]. Индексация с конца кортежа не поддерживается.

int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)
Часть Стабильной ABI.

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

Примечание

Эта функция «украдывает» ссылку на o и отбрасывает ссылку на элемент, уже находящийся в кортеже в затронутой позиции.

void PyTuple_SET_ITEM(PyObject *p, Py_ssize_t pos, PyObject *o)

Аналогично PyTuple_SetItem(), но без проверки ошибок и следует использовать только для заполнения совершенно новых кортежей.

Проверка границ выполняется как утверждение, если Python построен в отладочном режиме или with assertions.

Примечание

Эта функция «украдывает» ссылку на o и, в отличие от PyTuple_SetItem(), не отбрасывает ссылку на любой элемент, который заменяется; любая ссылка в кортеже в позиции pos будет утечка памяти.

int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize)

Может использоваться для изменения размера кортежа. newsize будет новой длиной кортежа. Поскольку кортежи должны быть неизменяемыми, это следует использовать только в том случае, если на объект есть только одна ссылка. Не используйте это, если кортеж может быть уже известен другой части кода. Кортеж всегда увеличивается или уменьшается в конце. Представьте себе, что старый кортеж уничтожается и создается новый, только более эффективно. Возвращает 0 при успехе. Код клиента никогда не должен предполагать, что полученное значение *p будет таким же, как и до вызова этой функции. Если объект, на который ссылается *p, заменяется, исходный *p уничтожается. При ошибке возвращает -1 и устанавливает *p в NULL, и вызывает MemoryError или SystemError.

© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/c-api/tuple.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API