Объекты-кортежи
-
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 и удаляет ссылку на элемент, который уже находится в кортеже в соответствующей позиции (если только он не равен NULL).
-
void PyTuple_SET_ITEM(PyObject *p, Py_ssize_t pos, PyObject *o) -
Аналогична
PyTuple_SetItem(), но не проверяет ошибки и должна использоваться только для заполнения новых кортежей.Проверка границ выполняется как утверждение, если Python собран в режиме отладки или с параметром
with assertions.Примечание
Эта функция «забирает» ссылку на o и, в отличие от
PyTuple_SetItem(), не удаляет ссылку на заменяемый элемент; любая ссылка на элемент кортежа в позиции pos будет утрачена.Предупреждение
Этот макрос следует использовать только для недавно созданных кортежей. Использование макроса для уже используемого кортежа (иначе говоря, с refcount > 1) может привести к неопределённому поведению.
-
int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize) -
Может использоваться для изменения размера кортежа. newsize задаёт новую длину кортежа. Поскольку кортежи должны быть неизменяемыми, эту функцию следует использовать, только если на объект имеется единственная ссылка. Не используйте её, если кортеж уже может быть известен другой части кода. Кортеж всегда увеличивается или уменьшается в конце. Представьте это как уничтожение старого кортежа и создание нового, только более эффективное. При успешном выполнении возвращает
0. Клиентский код никогда не должен предполагать, что значение*pпосле вызова этой функции останется прежним. Если объект, на который ссылается*p, заменён, исходный*pуничтожается. При ошибке возвращает-1, устанавливает*pв значениеNULLи вызываетMemoryErrorилиSystemError.
© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/c-api/tuple.html