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–2025 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