Объекты кортежа¶
-
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 тип Смысл name
const char *
имя типа последовательности структуры doc
const char *
указатель на докстринг для типа или NULL
для пропускаfields
PyStructSequence_Field *
указатель на NULL
-завершенный массив с именами полей нового типаn_in_sequence
int
количество полей, видимых на стороне Python (если используется как кортеж)
-
PyStructSequence_Field
¶ Описывает поле последовательности структуры. Поскольку последовательность структуры моделируется как кортеж, все поля вводятся как
PyObject*
. Индекс в массивеfields
PyStructSequence_Desc
определяет, какое поле последовательности структуры описано.Поле C тип Смысл name
const char *
имя поля или NULL
, чтобы завершить список именованных полей, установить значениеPyStructSequence_UnnamedField
, чтобы оставить поля неименованнымиdoc
const 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.