Sequence Protocol

  • int PySequence_Check(PyObject ** o *)

    • 如果对象提供序列协议,则返回1,否则返回0。此Function始终成功。
  • Py_ssize_t PySequence_Size(PyObject ** o *)

  • Py_ssize_t PySequence_Length(PyObject ** o *)

    • 如果成功,则按 Sequences 返回对象* o *,如果失败则返回-1。这等效于 Python 表达式len(o)

在版本 2.5 中进行了更改:这些函数返回了int类型。这可能需要更改您的代码以正确支持 64 位系统。

成功时返回* o1 o2 的串联,失败时返回 NULL *。这等效于 Python 表达式o1 + o2

  • PyObject * PySequence_Repeat(PyObject ** o *,Py_ssize_t * count *)
    • 返回值:新参考.

返回重复序列对象* o * * count 次的结果,如果失败则返回 NULL *。这等效于 Python 表达式o * count

在版本 2.5 中更改:此函数将int类型用于* count *。这可能需要更改您的代码以正确支持 64 位系统。

成功时返回* o1 o2 的串联,失败时返回 NULL 。如果 o1 *支持,则操作就地完成。这等效于 Python 表达式o1 += o2

  • PyObject * PySequence_InPlaceRepeat(PyObject ** o *,Py_ssize_t * count *)
    • 返回值:新参考.

返回重复序列对象* o * * count 次的结果,如果失败则返回 NULL 。当 o *支持时,该操作“就地”完成。这等效于 Python 表达式o *= count

在版本 2.5 中更改:此函数将int类型用于* count *。这可能需要更改您的代码以正确支持 64 位系统。

  • PyObject * PySequence_GetItem(PyObject ** o *,Py_ssize_t * i *)
    • 返回值:新参考.

返回* o 的第 i 个元素,失败时返回 NULL *。这等效于 Python 表达式o[i]

在版本 2.5 中进行了更改:此函数对* i *使用了int类型。这可能需要更改您的代码以正确支持 64 位系统。

  • PyObject * PySequence_GetSlice(PyObject ** o *,Py_ssize_t * i1 *,Py_ssize_t * i2 *)
    • 返回值:新参考.

返回* i1 i2 之间的序列对象 o 的切片,失败时返回 NULL *。这等效于 Python 表达式o[i1:i2]

在版本 2.5 中更改:此函数对* i1 i2 *使用了int类型。这可能需要更改您的代码以正确支持 64 位系统。

  • int PySequence_SetItem(PyObject **o ,Py_ssize_t * i PyObject v *)
    • 将对象* v 分配给 o 的第 i 个元素。引发异常并在失败时返回-1;成功返回0。这等效于 Python 语句o[i] = v。该Function不会窃取 v *的引用。

如果* v NULL *,则删除该元素,但是不建议使用此Function,而推荐使用PySequence_DelItem()

在版本 2.5 中进行了更改:此函数对* i *使用了int类型。这可能需要更改您的代码以正确支持 64 位系统。

  • int PySequence_DelItem(PyObject ** o *,Py_ssize_t * i *)
    • 删除对象* o 的第 i *个元素。失败时返回-1。这等效于 Python 语句del o[i]

在版本 2.5 中进行了更改:此函数对* i *使用了int类型。这可能需要更改您的代码以正确支持 64 位系统。

  • int PySequence_SetSlice(PyObject **o *,Py_ssize_t * i1 ,Py_ssize_t * i2 PyObject v *)
    • 将序列对象* v 分配给序列对象 o 中的切片,从 i1 i2 *。引发异常并在失败时返回-1;成功返回0。这等效于 Python 语句o[i1:i2] = v

如果* v NULL *,则会删除切片,但是不建议使用此Function,而推荐使用PySequence_DelSlice()

在版本 2.5 中更改:此函数对* i1 i2 *使用了int类型。这可能需要更改您的代码以正确支持 64 位系统。

  • int PySequence_DelSlice(PyObject ** o *,Py_ssize_t * i1 *,Py_ssize_t * i2 *)
    • 从* i1 i2 删除序列对象 o *中的切片。失败时返回-1。这等效于 Python 语句del o[i1:i2]

在版本 2.5 中更改:此函数对* i1 i2 *使用了int类型。这可能需要更改您的代码以正确支持 64 位系统。

  • Py_ssize_t PySequence_Count(PyObject *o PyObject value *)
    • 返回* o value *的出现次数,即返回o[key] == value的键的数目。失败时,返回-1。这等效于 Python 表达式o.count(value)

在版本 2.5 中进行了更改:此函数返回了int类型。这可能需要更改您的代码以正确支持 64 位系统。

  • 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 *)

    • 返回o[i] == value的第一个索引* i *。出错时,返回-1。这等效于 Python 表达式o.index(value)

在版本 2.5 中进行了更改:此函数返回了int类型。这可能需要更改您的代码以正确支持 64 位系统。

返回具有与任意序列* o *相同内容的列表对象。返回的列表保证是新的。

返回一个 Tuples 对象,其内容与失败时的任意序列* o NULL 相同。如果 o *是一个 Tuples,则将返回一个新的引用,否则将使用适当的内容构造一个 Tuples。这等效于 Python 表达式tuple(o)

  • PyObject * PySequence_Fast(PyObject *o ,const char m *)
    • 返回值:新参考.

除非序列已经是一个 Tuples 或列表,否则将序列* o 作为列表返回,在这种情况下将返回 o 。使用PySequence_Fast_GET_ITEM()访问结果的成员。失败时返回 NULL 。如果对象不是序列,则以 m *作为消息文本引发TypeError

  • PyObject * PySequence_Fast_GET_ITEM(PyObject ** o *,Py_ssize_t * i *)
    • *返回值:借用参考。

返回* o 的第 i 个元素,假设 o PySequence_Fast()返回, o 不是 NULL ,并且 i *在范围之内。

在版本 2.5 中进行了更改:此函数对* i *使用了int类型。这可能需要更改您的代码以正确支持 64 位系统。

注意,如果调整列表大小,则重新分配可能会重新定位 items 数组。因此,仅在 Sequences 无法更改的上下文中使用基础数组指针。

2.4 版的新Function。

  • PyObject * PySequence_ITEM(PyObject ** o *,Py_ssize_t * i *)
    • 返回值:新参考.

如果失败,则返回* o i 个元素或 NULL 。宏PySequence_GetItem(),但不检查 o *上的PySequence_Check()是否为真,并且不对负索引进行调整。

2.3 版的新Function。

在版本 2.5 中进行了更改:此函数对* i *使用了int类型。这可能需要更改您的代码以正确支持 64 位系统。