Объекты кортежей¶
-
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.
Возвращает новый объект кортежа размером len, или
NULLпри неудаче.
-
PyObject *
PyTuple_Pack(Py_ssize_t n, ...)¶ - Return value: New reference. Part of the Stable 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 Stable ABI.
Принимает указатель на объект кортежа и возвращает размер этого кортежа.
-
Py_ssize_t
PyTuple_GET_SIZE(PyObject *p)¶ Возвращает размер кортежа p, который должен быть не``NULL`` и указывать на кортеж; проверка ошибок не производится.
-
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.
Возвращает фрагмент кортежа, на который указывает p, между low и high, или
NULLпри неудаче. Это эквивалентно выражению Pythonp[low:high]. Индексирование с конца списка не поддерживается.
-
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(), но не проверяет ошибки и должен только использоваться для заполнения совершенно новых кортежей.Примечание
Этот макрос «крадет» ссылку на o, и, в отличие от
PyTuple_SetItem(), не отбрасывает ссылку на любой заменяемый элемент; любая ссылка в кортеже в позиции pos будет пропущена.
-
int
_PyTuple_Resize(PyObject **p, Py_ssize_t newsize)¶ Может использоваться для изменения размера кортежа. newsize будет новой длиной кортежа. Поскольку кортежи предполагаются неизменяемыми, этот метод следует использовать только в том случае, если имеется только одна ссылка на объект. Не используйте эту функцию, если кортеж уже может быть известен другой части кода. Кортеж всегда будет увеличиваться или уменьшаться в конце. Считайте, что вы уничтожаете старый кортеж и создаете новый, только более эффективно. Возвращает
0при успехе. Клиентский код никогда не должен предполагать, что результирующее значение*pбудет таким же, как и до вызова этой функции. Если объект, на который ссылается*p, заменяется, исходный*pуничтожается. В случае неудачи возвращается-1и устанавливается*pвNULL, а также поднимается сообщениеMemoryErrorилиSystemError.
Объекты последовательности структур¶
Объекты последовательности struct - это эквивалент объектов namedtuple() на языке C, т.е. последовательность, к элементам которой также можно получить доступ через атрибуты. Чтобы создать последовательность struct, сначала необходимо создать определенный тип последовательности struct.
-
PyTypeObject *
PyStructSequence_NewType(PyStructSequence_Desc *desc)¶ - Return value: New reference. Part of the Stable ABI.
Создайте новый тип struct sequence из данных в desc, описанных ниже. Экземпляры полученного типа могут быть созданы с помощью
PyStructSequence_New().
-
void
PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)¶ Инициализирует тип последовательности struct type из desc на месте.
-
int
PyStructSequence_InitType2(PyTypeObject *type, PyStructSequence_Desc *desc)¶ То же, что и
PyStructSequence_InitType, но возвращает0при успехе и-1при неудаче.Добавлено в версии 3.4.
-
type
PyStructSequence_Desc¶ - Part of the Stable ABI (including all members).
Содержит метаинформацию создаваемого типа последовательности struct.
Поле
C Тип
Значение
nameconst char *имя типа последовательности struct
docconst char *указатель на строку docstring для типа или
NULLдля опусканияfieldsPyStructSequence_Field *указатель на ``NULL``законченный массив с именами полей нового типа
n_in_sequenceintколичество полей, видимых со стороны Python (если используется как кортеж)
-
type
PyStructSequence_Field¶ - Part of the Stable ABI (including all members).
Описывает поле последовательности struct. Поскольку последовательность struct моделируется как кортеж, все поля типизируются как PyObject*. Индекс в массиве
fieldsмассиваPyStructSequence_Descопределяет, какое поле последовательности struct описывается.Поле
C Тип
Значение
nameconst char *имя для поля или
NULLдля завершения списка именованных полей, устанавливается вPyStructSequence_UnnamedFieldдля оставления неименованного поляdocconst char *поле docstring или
NULL, чтобы опустить
-
const char *const
PyStructSequence_UnnamedField¶ Специальное значение для имени поля, чтобы оставить его безымянным.
Изменено в версии 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.
Возвращает объект в позиции pos в последовательности struct, на которую указывает 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)¶ - Part of the Stable ABI.
Устанавливает поле с индексом pos последовательности struct p в значение o. Как и
PyTuple_SET_ITEM(), это следует использовать только для заполнения совершенно новых экземпляров.Примечание
Эта функция «крадет» ссылку на o.
-
void
PyStructSequence_SET_ITEM(PyObject *p, Py_ssize_t *pos, PyObject *o)¶ Макроэквивалент
PyStructSequence_SetItem().Примечание
Эта функция «крадет» ссылку на o.