Объекты кортежей¶
-
PyTypeObject PyTuple_Type¶
- Part of the Стабильный ABI.
Этот экземпляр
PyTypeObject
представляет тип кортежа Python; это тот же объект, что иtuple
на уровне Python.
-
int PyTuple_Check(PyObject *p)¶
Возвращает значение true, если p является объектом tuple или экземпляром подтипа типа tuple. Эта функция всегда выполняется успешно.
-
int PyTuple_CheckExact(PyObject *p)¶
Возвращает значение true, если p является объектом tuple, но не экземпляром подтипа типа tuple. Эта функция всегда выполняется успешно.
-
PyObject *PyTuple_New(Py_ssize_t len)¶
- Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.
Возвращает новый объект-кортеж размером len или
NULL
в случае сбоя.
-
PyObject *PyTuple_Pack(Py_ssize_t n, ...)¶
- Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.
Возвращает новый объект кортежа размером n или
NULL
в случае сбоя. Значения кортежа инициализируются последующими аргументами n C, указывающими на объекты Python.PyTuple_Pack(2, a, b)
эквивалентноPy_BuildValue("(OO)", a, b)
.
-
Py_ssize_t PyTuple_Size(PyObject *p)¶
- Part of the Стабильный ABI.
Возьмите указатель на объект кортежа и верните размер этого кортежа.
-
Py_ssize_t PyTuple_GET_SIZE(PyObject *p)¶
Возвращает размер кортежа p, который должен быть не``NULL`` и указывать на кортеж; проверка ошибок не выполняется.
-
PyObject *PyTuple_GetItem(PyObject *p, Py_ssize_t pos)¶
- Возвращаемое значение: Заимствованная ссылка. Part of the Стабильный ABI.
Возвращает объект в позиции pos в кортеже, на который указывает p. Если значение pos отрицательное или выходит за пределы допустимых значений, возвращает
NULL
и устанавливает исключениеIndexError
.
-
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)¶
- Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.
Возвращает фрагмент кортежа, на который указывает p между low и high, или
NULL
в случае сбоя. Это эквивалент выражения Pythonp[low:high]
. Индексация с конца списка не поддерживается.
-
int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)¶
- Part of the Стабильный ABI.
Вставьте ссылку на объект o в позицию pos кортежа, на который указывает p. В случае успеха верните
0
. Если значение pos выходит за рамки допустимого, верните-1
и задайте исключениеIndexError
.Примечание
Эта функция «крадет» ссылку на o и отбрасывает ссылку на элемент, который уже находится в кортеже в соответствующей позиции.
-
void PyTuple_SET_ITEM(PyObject *p, Py_ssize_t pos, PyObject *o)¶
Например : c:func: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
.
Объекты структурной последовательности¶
Объекты Struct sequence на языке Си эквивалентны объектам namedtuple()
, т.е. последовательности, к элементам которой также можно получить доступ через атрибуты. Чтобы создать struct sequence, сначала необходимо создать определенный тип struct sequence.
-
PyTypeObject *PyStructSequence_NewType(PyStructSequence_Desc *desc)¶
- Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.
Создайте новый структурный тип последовательности из данных в 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.
-
type PyStructSequence_Desc¶
- Part of the Стабильный ABI (including all members).
Содержит метаинформацию типа struct sequence для создания.
-
const char *name¶
Имя типа структурной последовательности.
-
const char *doc¶
Указатель на строку документации для типа или
NULL
, который нужно опустить.
-
PyStructSequence_Field *fields¶
Указатель на
NULL
-завершенный массив с именами полей нового типа.
-
int n_in_sequence¶
Количество полей, видимых на стороне Python (если используется в качестве кортежа).
-
const char *name¶
-
type PyStructSequence_Field¶
- Part of the Стабильный ABI (including all members).
Описывает поле структурной последовательности. Поскольку структурная последовательность моделируется как кортеж, все поля вводятся следующим образом PyObject*. Индекс в массиве
fields
из массиваPyStructSequence_Desc
определяет, какое поле структурной последовательности описано.-
const char *name¶
Имя для поля или
NULL
чтобы завершить список именованных полей, установите значениеPyStructSequence_UnnamedField
, чтобы оставить безымянным.
-
const char *doc¶
Поле docstring или
NULL
опустить.
-
const char *name¶
-
const char *const PyStructSequence_UnnamedField¶
- Part of the Стабильный ABI since version 3.11.
Специальное значение для имени поля, позволяющее оставить его безымянным.
Изменено в версии 3.9: Тип был изменен с
char *
.
-
PyObject *PyStructSequence_New(PyTypeObject *type)¶
- Возвращаемое значение: Новая ссылка. Part of the Стабильный ABI.
Создает экземпляр type, который должен был быть создан с помощью
PyStructSequence_NewType()
.
-
PyObject *PyStructSequence_GetItem(PyObject *p, Py_ssize_t pos)¶
- Возвращаемое значение: Заимствованная ссылка. Part of the Стабильный ABI.
Возвращает объект в позицию pos в последовательности структур, на которую указывает p. Проверка границ не выполняется.
-
PyObject *PyStructSequence_GET_ITEM(PyObject *p, Py_ssize_t pos)¶
- Возвращаемое значение: Заимствованная ссылка.
Макроэквивалент
PyStructSequence_GetItem()
.
-
void PyStructSequence_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)¶
- Part of the Стабильный ABI.
Присваивает полю с индексом pos последовательности структур p значение o. Например, c:func:PyTuple_SET_ITEM, это должно использоваться только для заполнения совершенно новых экземпляров.
Примечание
Эта функция «крадет» ссылку на o.
-
void PyStructSequence_SET_ITEM(PyObject *p, Py_ssize_t *pos, PyObject *o)¶
Аналогично
PyStructSequence_SetItem()
, но реализован как статическая встроенная функция.Примечание
Эта функция «крадет» ссылку на o.