Протокол последовательности¶
-
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
при сбое. Это эквивалентноlen(o)
выражению Python.
-
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
при неудаче. Операция выполняется на месте тогда, когда 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)¶ Присвоить i элементу объекта o элемент v. Поднять исключение и вернуть
-1
при сбое; возвращает0
при успехе. Это Python эквивалент инструкцияo[i] = v
. Эта функция не крадет ссылку на v.Если v
NULL
, элемент удаляется, однако эта функция устаревает в пользу использованияPySequence_DelItem()
.
-
int
PySequence_DelItem
(PyObject *o, Py_ssize_t i)¶ Удалить iый элемент объекта o. Возвращает
-1
при отказе. Это Python эквивалент инструкцииdel 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
при отказе. Это Python эквивалент инструкцииdel 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 и без корректировки на отрицательные индексы.