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