Объекты кортежа¶
- 
PyTypeObject 
PyTuple_Type¶ Сущность
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.
Возвращает новый объект кортежа размера len или
NULLпри сбое. 
- 
PyObject* 
PyTuple_Pack(Py_ssize_t n, ...)¶ - Return value: New reference.
Возвращает новый объект кортежа размера n или
NULLпри сбое. Кортежные значения инициализируются для последующих аргументов n C, указывающих на Python объекты.PyTuple_Pack(2, a, b)эквивалентноPy_BuildValue("(OO)", a, b). 
- 
Py_ssize_t 
PyTuple_Size(PyObject *p)¶ Получить указатель на объект кортежа и возвращает размер этого кортежа.
- 
Py_ssize_t 
PyTuple_GET_SIZE(PyObject *p)¶ Возвращает размер кортежа p, который должен быть не-
NULLи указывает на кортеж; проверка ошибок не выполняется.
- 
PyObject* 
PyTuple_GetItem(PyObject *p, Py_ssize_t pos)¶ - Return value: Borrowed reference.
Возвращает объект в положении 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.
Возвращает фрагмент кортежа, на который указывает p между low и high, или
NULLпри сбое. Это эквивалент Python выраженияp[low:high]. Индексирование из конца списка не поддерживается. 
- 
int 
PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)¶ Вставить ссылку на объект o в положение pos кортежа, на которое указывает p. Возвращает
0при успехе. Если pos выходит за границы, возвращается-1и устанавливается исключениеIndexError.Примечание
Функция «крадет» ссылку на o и отбрасывает ссылку на элемент, уже находящийся в кортеже в затронутом положении.
- 
void 
PyTuple_SET_ITEM(PyObject *p, Py_ssize_t pos, PyObject *o)¶ Как и
PyTuple_SetItem(), но не выполняет проверку ошибок и должна использоваться только для заполнения совершенно новых кортежей.Примечание
Макрос «крадет» ссылку на o и, в отличие от
PyTuple_SetItem(), не отбрасывает ссылку на любой заменяемый элемент; любая ссылка в кортеже в положении pos будет утекать.
- 
int 
_PyTuple_Resize(PyObject **p, Py_ssize_t newsize)¶ Может использоваться для изменения размера кортежа. newsize будет новая длина кортежа. Поскольку кортежи предполагаемо являются неизменяемыми, их следует использовать только в том случае, если имеется только одна ссылка на объект. Не используйте это, если кортеж уже известен в какой-либо другой части кода. Кортеж всегда будет расти или сжиматься в конце. Думайте об этом как о разрушении старого кортежа и создании нового, только более эффективно. Возвращает
0при успехе. Клиентский код не должны предполагать, что результирующий значение*pбудет таким же, как до вызова этой функции. Если объект, на который ссылается*p, заменен, исходный*pуничтожается. При отказе возвращает-1и устанавливает*pвNULLи поднимаетMemoryErrorилиSystemError.
- 
int 
PyTuple_ClearFreeList()¶ Очистить свободный список. Возвращает общее количество освобожденных элементов.
Объекты последовательности структуры¶
Объекты последовательности структуры представляют собой C-эквивалент namedtuple()
объектов, т.е. последовательность, элементы которой также могут быть доступны
через атрибуты. Для создания последовательности структур сначала необходимо
создать определенный тип последовательности структур.
- 
PyTypeObject* 
PyStructSequence_NewType(PyStructSequence_Desc *desc)¶ - Return value: New reference.
Создать новый тип последовательности структуры из данных в desc, описанных ниже. Сущности результирующего типа можно создать с помощью
PyStructSequence_New(). 
- 
void 
PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)¶ Инициализирует тип последовательности структуры, type из desc на месте.
- 
int 
PyStructSequence_InitType2(PyTypeObject *type, PyStructSequence_Desc *desc)¶ То же, что и
PyStructSequence_InitType, но возвращает0при успехе и-1при неудаче.Добавлено в версии 3.4.
- 
PyStructSequence_Desc¶ Содержит метаинформацию типа создаваемой последовательности структуры.
Поле C тип Смысл nameconst char *имя типа последовательности структуры docconst char *указатель на докстринг для типа или NULLдля пропускаfieldsPyStructSequence_Field *указатель на NULL-завершенный массив с именами полей нового типаn_in_sequenceintколичество полей, видимых на стороне Python (если используется как кортеж) 
- 
PyStructSequence_Field¶ Описывает поле последовательности структуры. Поскольку последовательность структуры моделируется как кортеж, все поля вводятся как
PyObject*. Индекс в массивеfieldsPyStructSequence_Descопределяет, какое поле последовательности структуры описано.Поле C тип Смысл nameconst char *имя поля или NULL, чтобы завершить список именованных полей, установить значениеPyStructSequence_UnnamedField, чтобы оставить поля неименованнымиdocconst char *докстринг поле или NULLдля пропуска
- 
char* 
PyStructSequence_UnnamedField¶ Специальные значение для имени поля, чтобы оставить его неназванным.
- 
PyObject* 
PyStructSequence_New(PyTypeObject *type)¶ - Return value: New reference.
Создает сущность type, которая должна быть создана с помощью
PyStructSequence_NewType(). 
- 
PyObject* 
PyStructSequence_GetItem(PyObject *p, Py_ssize_t pos)¶ - Return value: Borrowed reference.
Возвращает объект в позиции pos в последовательности структуры, на которую указывает p. Проверка границ не выполняется.
 
- 
PyObject* 
PyStructSequence_GET_ITEM(PyObject *p, Py_ssize_t pos)¶ - Return value: Borrowed reference.
Макро-эквивалент
PyStructSequence_GetItem(). 
- 
void 
PyStructSequence_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)¶ Устанавливает поле в индексе pos последовательности структуры p к значению o. Как и
PyTuple_SET_ITEM(), это должно использоваться только для заполнения совершенно новых сущности.Примечание
Функция «крадет» ссылку на o.
- 
void 
PyStructSequence_SET_ITEM(PyObject *p, Py_ssize_t *pos, PyObject *o)¶ Макро-эквивалент
PyStructSequence_SetItem().Примечание
Функция «крадет» ссылку на o.
