Протокол последовательности¶
-
int
PySequence_Check
(PyObject *o)¶ Возвращает
1
, если объект предоставляет протокол последовательности, и0
в противном случае. Обратите внимание, что он возвращает1
для классов Python с методом__getitem__()
, если они не являются подклассамиdict
, поскольку в общем случае невозможно определить, какой тип ключей он поддерживает. Данная функция всегда успешна.
-
Py_ssize_t
PySequence_Size
(PyObject *o)¶ -
Py_ssize_t
PySequence_Length
(PyObject *o)¶ Возвращает количество объектов в последовательности o в случае успеха и
-1
в случае ошибки. Это эквивалентно Python выражениюlen(o)
.
-
PyObject*
PySequence_Concat
(PyObject *o1, PyObject *o2)¶ - Return value: New reference.
Возвращает конкатенацию o1 и o2 в случае успеха и
NULL
в случае неудачи. Это эквивалент Python выраженияo1 + o2
.
-
PyObject*
PySequence_Repeat
(PyObject *o, Py_ssize_t count)¶ - Return value: New reference.
Возвращает результат повторения объекта последовательности o count раз или
NULL
в случае ошибки. Это эквивалент Python выраженияo * count
.
-
PyObject*
PySequence_InPlaceConcat
(PyObject *o1, PyObject *o2)¶ - Return value: New reference.
Возвращает конкатенацию o1 и o2 в случае успеха и
NULL
в случае неудачи. Операция выполняется in-place, если её поддерживает o1. Это эквивалент Python выраженияo1 += o2
.
-
PyObject*
PySequence_InPlaceRepeat
(PyObject *o, Py_ssize_t count)¶ - Return value: New reference.
Возвращает результат повторения объекта последовательности o count раз или
NULL
в случае ошибки. Операция выполняется на месте, если её поддерживает o. Это эквивалент Python выраженияo *= count
.
-
PyObject*
PySequence_GetItem
(PyObject *o, Py_ssize_t i)¶ - Return value: New reference.
Возвращает i-ый элемент o или
NULL
в случае ошибки. Это эквивалент Python выраженияo[i]
.
-
PyObject*
PySequence_GetSlice
(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)¶ - Return value: New reference.
Возвращает фрагмент объекта последовательности o между i1 и i2 или
NULL
в случае ошибки. Это эквивалент Python выраженияo[i1:i2]
.
-
int
PySequence_SetItem
(PyObject *o, Py_ssize_t i, PyObject *v)¶ Назначает объект v i-ому элементу в o. Создаёт исключение и возвращает
-1
в случае ошибки; возвращает0
в случае успеха. Это эквивалент оператора Pythono[i] = v
. Эта функция не крадёт ссылку на v.Если v —
NULL
, элемент удаляется, однако эта функция устарела в пользу использованияPySequence_DelItem()
.
-
int
PySequence_DelItem
(PyObject *o, Py_ssize_t i)¶ Удалить i -ый элемент объекта o. В случае ошибки возвращает
-1
. Это эквивалент оператора Pythondel o[i]
.
-
int
PySequence_SetSlice
(PyObject *o, Py_ssize_t i1, Py_ssize_t i2, PyObject *v)¶ Назначает объект последовательности v объекту среза в последовательности o от i1 до i2. Это эквивалент оператора Python
o[i1:i2] = v
.
-
int
PySequence_DelSlice
(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)¶ Удаляет фрагмент в объекте последовательности o от i1 до i2. В случае ошибки возвращает
-1
. Это эквивалент оператора Pythondel o[i1:i2]
.
-
Py_ssize_t
PySequence_Count
(PyObject *o, PyObject *value)¶ Возвращает количество вхождений value в o, т. е. возвращает количество ключей, для которых
o[key] == value
. В случае неудачи возвращает-1
. Это эквивалентно Python выражениюo.count(value)
.
-
int
PySequence_Contains
(PyObject *o, PyObject *value)¶ Определяет, содержит ли o value. Если элемент в o равен value, возвращает
1
, в противном случае возвращает0
. В случае ошибки возвращает-1
. Это эквивалентно Python выражениюvalue in o
.
-
Py_ssize_t
PySequence_Index
(PyObject *o, PyObject *value)¶ Возвращает первый индекс i, для которого
o[i] == value
. В случае ошибки возвращает-1
. Это эквивалентно Python выражениюo.index(value)
.
-
PyObject*
PySequence_List
(PyObject *o)¶ - Return value: New reference.
Возвращает объект списка с тем же содержимым, что и последовательность или итерация o, или
NULL
в случае ошибки. Возвращенный список гарантированно новый. Это эквивалентно Python выражениюlist(o)
.
-
PyObject*
PySequence_Tuple
(PyObject *o)¶ - Return value: New reference.
Возвращает объект кортежа с тем же содержимым, что и последовательность или итерируемый o, или
NULL
в случае ошибки. Если o является кортежем, будет возвращена новая ссылка, в противном случае будет создан кортеж с соответствующим содержимым. Это эквивалентно Python выражениюtuple(o)
.
-
PyObject*
PySequence_Fast
(PyObject *o, const char *m)¶ - Return value: New reference.
Возвращает последовательность или итерируемый o как объект, используемый другим семейством функций
PySequence_Fast*
. Если объект не является последовательностью или итерируемым, вызываетTypeError
с m в качестве текста сообщения. В случае ошибки возвращаетNULL
.Функции
PySequence_Fast*
названы таким образом, потому что они предполагают, что o являетсяPyTupleObject
илиPyListObject
, и напрямую обращаются к полям данных o.В качестве детали реализации CPython, если o уже является последовательностью или списком, он будет возвращён.
-
Py_ssize_t
PySequence_Fast_GET_SIZE
(PyObject *o)¶ Возвращает длину o, предполагая, что o был возвращён
PySequence_Fast()
и что o не являетсяNULL
. Размер также можно получить, вызвавPySequence_Size()
на o, ноPySequence_Fast_GET_SIZE()
быстрее, поскольку он может предполагать, что o является списком или кортежем.
-
PyObject*
PySequence_Fast_GET_ITEM
(PyObject *o, Py_ssize_t i)¶ - Return value: Borrowed reference.
Возвращает i-ый элемент o, предполагая, что o был возвращён
PySequence_Fast()
, o неNULL
, и что i находится в пределах.
-
PyObject**
PySequence_Fast_ITEMS
(PyObject *o)¶ Возвращает базовый массив указателей PyObject. Предполагается, что o был возвращён
PySequence_Fast()
, а o неNULL
.Обратите внимание: если размер списка изменяется, перераспределение может переместить массив элементов. Таким образом, используйте указатель на базовый массив только в контекстах, где последовательность не может измениться.
-
PyObject*
PySequence_ITEM
(PyObject *o, Py_ssize_t i)¶ - Return value: New reference.
Возвращает i-ый элемент o или
NULL
в случае сбоя. Более быстрая формаPySequence_GetItem()
, но без проверки правильностиPySequence_Check()
на o и без поправки на отрицательные индексы.