Кортежні об’єкти

type PyTupleObject

Цей підтип PyObject представляє об’єкт кортежу Python.

PyTypeObject PyTuple_Type
Part of the Stable 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)
Return value: New reference. Part of the Stable ABI.

Return a new tuple object of size len, or NULL on failure.

PyObject *PyTuple_Pack(Py_ssize_t n, ...)
Return value: New reference. Part of the Stable ABI.

Return a new tuple object of size n, or NULL on failure. The tuple values are initialized to the subsequent n C arguments pointing to Python objects. PyTuple_Pack(2, a, b) is equivalent to Py_BuildValue("(OO)", a, b).

Py_ssize_t PyTuple_Size(PyObject *p)
Part of the Stable ABI.

Take a pointer to a tuple object, and return the size of that tuple.

Py_ssize_t PyTuple_GET_SIZE(PyObject *p)

Return the size of the tuple p, which must be non-NULL and point to a tuple; no error checking is performed.

PyObject *PyTuple_GetItem(PyObject *p, Py_ssize_t pos)
Return value: Borrowed reference. Part of the Stable ABI.

Повертає об’єкт у позицію pos у кортежі, на який вказує p. Якщо pos є негативним або виходить за межі, поверніть NULL і встановіть виняток IndexError.

PyObject *PyTuple_GET_ITEM(PyObject *p, Py_ssize_t pos)
Return value: Borrowed reference.

Як PyTuple_GetItem(), але не перевіряє його аргументи.

PyObject *PyTuple_GetSlice(PyObject *p, Py_ssize_t low, Py_ssize_t high)
Return value: New reference. Part of the Stable ABI.

Return the slice of the tuple pointed to by p between low and high, or NULL on failure. This is the equivalent of the Python expression p[low:high]. Indexing from the end of the list is not supported.

int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)
Part of the Stable ABI.

Вставте посилання на об’єкт o у позиції pos кортежу, на який вказує p. У разі успіху повертає 0. Якщо pos виходить за межі, поверніть -1 і встановіть виняток IndexError.

Примітка

Ця функція «викрадає» посилання на o та відкидає посилання на елемент, який уже міститься в кортежі в ураженій позиції.

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

Подібно до PyTuple_SetItem(), але не перевіряє помилки, і його слід використовувати лише для заповнення абсолютно нових кортежів.

Примітка

This function «steals» a reference to o, and, unlike PyTuple_SetItem(), does not discard a reference to any item that is being replaced; any reference in the tuple at position pos will be leaked.

int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize)

Можна використовувати для зміни розміру кортежу. newsize буде новою довжиною кортежу. Оскільки кортежі вважаються незмінними, це слід використовувати, лише якщо є лише одне посилання на об’єкт. Не використовуйте це, якщо кортеж може бути вже відомий іншій частині коду. Кортеж завжди зростатиме або зменшуватиметься в кінці. Думайте про це як про знищення старого кортежу та створення нового, але більш ефективного. У разі успіху повертає 0. Клієнтський код ніколи не повинен вважати, що результуюче значення *p буде таким самим, як і до виклику цієї функції. Якщо об’єкт, на який посилається *p, замінюється, оригінальний *p знищується. У разі помилки повертає -1 і встановлює *p значення NULL і викликає MemoryError або SystemError.

Структуруйте об’єкти послідовності

Об’єкти послідовності структур є еквівалентом C об’єктів namedtuple(), тобто послідовності, до елементів якої також можна отримати доступ через атрибути. Щоб створити послідовність структур, спочатку потрібно створити певний тип послідовності структур.

PyTypeObject *PyStructSequence_NewType(PyStructSequence_Desc *desc)
Return value: New reference. Part of the Stable ABI.

Створіть новий тип послідовності структур із даних у desc, як описано нижче. Екземпляри отриманого типу можна створити за допомогою PyStructSequence_New().

void PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)

Ініціалізує структурну послідовність типу type з desc на місці.

int PyStructSequence_InitType2(PyTypeObject *type, PyStructSequence_Desc *desc)

The same as PyStructSequence_InitType, but returns 0 on success and -1 on failure.

Нове в версії 3.4.

type PyStructSequence_Desc
Part of the Stable ABI (including all members).

Містить метаінформацію типу послідовності структур, яку потрібно створити.

const char *name

Name of the struct sequence type.

const char *doc

Pointer to docstring for the type or NULL to omit.

PyStructSequence_Field *fields

Pointer to NULL-terminated array with field names of the new type.

int n_in_sequence

Number of fields visible to the Python side (if used as tuple).

type PyStructSequence_Field
Part of the Stable ABI (including all members).

Describes a field of a struct sequence. As a struct sequence is modeled as a tuple, all fields are typed as PyObject*. The index in the fields array of the PyStructSequence_Desc determines which field of the struct sequence is described.

const char *name

Name for the field or NULL to end the list of named fields, set to PyStructSequence_UnnamedField to leave unnamed.

const char *doc

Field docstring or NULL to omit.

const char *const PyStructSequence_UnnamedField
Part of the Stable ABI since version 3.11.

Спеціальне значення для імені поля, щоб залишити його без імені.

Змінено в версії 3.9: Тип змінено з char *.

PyObject *PyStructSequence_New(PyTypeObject *type)
Return value: New reference. Part of the Stable ABI.

Створює екземпляр type, який має бути створено за допомогою PyStructSequence_NewType().

PyObject *PyStructSequence_GetItem(PyObject *p, Py_ssize_t pos)
Return value: Borrowed reference. Part of the Stable ABI.

Return the object at position pos in the struct sequence pointed to by p. No bounds checking is performed.

PyObject *PyStructSequence_GET_ITEM(PyObject *p, Py_ssize_t pos)
Return value: Borrowed reference.

Macro equivalent of PyStructSequence_GetItem().

void PyStructSequence_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)
Part of the Stable ABI.

Встановлює поле за індексом pos послідовності структур p на значення o. Як і PyTuple_SET_ITEM(), це слід використовувати лише для заповнення абсолютно нових екземплярів.

Примітка

Ця функція «краде» посилання на o.

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

Similar to PyStructSequence_SetItem(), but implemented as a static inlined function.

Примітка

Ця функція «краде» посилання на o.