Объекты кортежей¶
-
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 Тип
Значение
name
const char *
имя типа последовательности struct
doc
const char *
указатель на строку docstring для типа или
NULL
для опусканияfields
PyStructSequence_Field *
указатель на ``NULL``законченный массив с именами полей нового типа
n_in_sequence
int
количество полей, видимых со стороны Python (если используется как кортеж)
-
type
PyStructSequence_Field
¶ - Part of the Stable ABI (including all members).
Описывает поле последовательности struct. Поскольку последовательность struct моделируется как кортеж, все поля типизируются как PyObject*. Индекс в массиве
fields
массиваPyStructSequence_Desc
определяет, какое поле последовательности struct описывается.Поле
C Тип
Значение
name
const char *
имя для поля или
NULL
для завершения списка именованных полей, устанавливается вPyStructSequence_UnnamedField
для оставления неименованного поляdoc
const 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.