Протокол последовательности¶
-
int
PySequence_Check
(PyObject *o)¶ - Part of the Stable ABI.
Возвращает
1
, если объект обеспечивает протокол последовательности, и0
в противном случае. Обратите внимание, что она возвращает1
для классов Python с методом__getitem__()
, если только они не являются подклассамиdict
, поскольку в общем случае невозможно определить, какой тип ключей поддерживает класс. Эта функция всегда работает успешно.
-
Py_ssize_t
PySequence_Size
(PyObject *o)¶ -
Py_ssize_t
PySequence_Length
(PyObject *o)¶ - Part of the Stable ABI.
Возвращает количество объектов в последовательности o при успехе, и
-1
при неудаче. Это эквивалентно выражению Pythonlen(o)
.
-
PyObject *
PySequence_Concat
(PyObject *o1, PyObject *o2)¶ - Return value: New reference. Part of the Stable ABI.
Возвращает конкатенацию o1 и o2 при успехе и
NULL
при неудаче. Это эквивалентно выражению Pythono1 + o2
.
-
PyObject *
PySequence_Repeat
(PyObject *o, Py_ssize_t count)¶ - Return value: New reference. Part of the Stable ABI.
Возвращает результат повторения объекта последовательности o count раз, или
NULL
при неудаче. Это эквивалентно выражению Pythono * count
.
-
PyObject *
PySequence_InPlaceConcat
(PyObject *o1, PyObject *o2)¶ - Return value: New reference. Part of the Stable ABI.
Возвращает конкатенацию o1 и o2 при успехе и
NULL
при неудаче. Операция выполняется вместе, если o1 поддерживает ее. Это эквивалент выражения Pythono1 += o2
.
-
PyObject *
PySequence_InPlaceRepeat
(PyObject *o, Py_ssize_t count)¶ - Return value: New reference. Part of the Stable ABI.
Возвращает результат повторения объекта sequence o count раз, или
NULL
при неудаче. Операция выполняется вместе, если o поддерживает ее. Это эквивалент выражения Pythono *= count
.
-
PyObject *
PySequence_GetItem
(PyObject *o, Py_ssize_t i)¶ - Return value: New reference. Part of the Stable ABI.
Возвращает i-й элемент из o, или
NULL
при неудаче. Это эквивалент выражения Pythono[i]
.
-
PyObject *
PySequence_GetSlice
(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)¶ - Return value: New reference. Part of the Stable ABI.
Возвращает фрагмент объекта последовательности o между i1 и i2, или
NULL
при неудаче. Это эквивалентно выражению Pythono[i1:i2]
.
-
int
PySequence_SetItem
(PyObject *o, Py_ssize_t i, PyObject *v)¶ - Part of the Stable ABI.
Присвоить объект v i-му элементу o. Вызвать исключение и вернуть
-1
при неудаче; вернуть0
при успехе. Это эквивалент оператора Pythono[i] = v
. Эта функция не крадет ссылку на v.Если v равно
NULL
, элемент удаляется, но эта функция устарела в пользу использованияPySequence_DelItem()
.
-
int
PySequence_DelItem
(PyObject *o, Py_ssize_t i)¶ - Part of the Stable ABI.
Удалить i-й элемент объекта o. При неудаче возвращает
-1
. Это эквивалент оператора Pythondel o[i]
.
-
int
PySequence_SetSlice
(PyObject *o, Py_ssize_t i1, Py_ssize_t i2, PyObject *v)¶ - Part of the Stable ABI.
Присвоить объект последовательности v срезу в объекте последовательности o от i1 до i2. Это эквивалент оператора Python
o[i1:i2] = v
.
-
int
PySequence_DelSlice
(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)¶ - Part of the Stable ABI.
Удалить фрагмент объекта последовательности o от i1 до i2. При неудаче возвращает
-1
. Это эквивалент оператора Pythondel o[i1:i2]
.
-
Py_ssize_t
PySequence_Count
(PyObject *o, PyObject *value)¶ - Part of the Stable ABI.
Возвращает количество вхождений значения в o, то есть возвращает количество ключей, для которых
o[key] == value
. При неудаче возвращается-1
. Это эквивалентно выражению Pythono.count(value)
.
-
int
PySequence_Contains
(PyObject *o, PyObject *value)¶ - Part of the Stable ABI.
Определите, содержит ли o значение value. Если элемент в o равен значению, возвращается
1
, иначе возвращается0
. При ошибке возвращается-1
. Это эквивалентно выражению Pythonvalue in o
.
-
Py_ssize_t
PySequence_Index
(PyObject *o, PyObject *value)¶ - Part of the Stable ABI.
Возвращает первый индекс i, для которого
o[i] == value
. При ошибке возвращается-1
. Это эквивалентно выражению Pythono.index(value)
.
-
PyObject *
PySequence_List
(PyObject *o)¶ - Return value: New reference. Part of the Stable ABI.
Возвращает объект list с тем же содержимым, что и последовательность или итерабель o, или
NULL
при неудаче. Возвращаемый список гарантированно является новым. Это эквивалентно выражению Pythonlist(o)
.
-
PyObject *
PySequence_Tuple
(PyObject *o)¶ - Return value: New reference. Part of the Stable ABI.
Возвращает объект кортежа с тем же содержимым, что и последовательность или итерабельность o, или
NULL
при неудаче. Если o является кортежем, будет возвращена новая ссылка, в противном случае будет построен кортеж с соответствующим содержимым. Это эквивалентно выражению Pythontuple(o)
.
-
PyObject *
PySequence_Fast
(PyObject *o, const char *m)¶ - Return value: New reference. Part of the Stable ABI.
Возвращает последовательность или итерабельность 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 истинна и без корректировки отрицательных индексов.