序列协议

int PySequence_Check( PyObject  *o)
返回1如果对象提供序列协议,和0否则。注意它返回1用于带有__getitem__()方法的Python类,除非它们是dict子类,因为一般情况下不可能确定是什么它支持的键的类型。这个功能总是成功的.
Py_ssize_t PySequence_Size( PyObject  *o)
Py_ssize_t PySequence_Length( PyObject  *o)

成功时返回o的对象数量,-1 onfailure。这相当于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 onfailure。这相当于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 onfailure。当in-place支持时,操作完成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 onfailure之间返回序列对象NULL的切片。这相当于Python表达式o[i1:i2].

int PySequence_SetItem( PyObject  *o,Py_ssize_t  i,PyObject  *v)
将对象v分配给i的o。提出异常并在失败时返回-1;成功时返回0。这相当于Python语句o[i] = v。这个函数doesnot窃取对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 onfailure。这相当于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作为列表返回,除非它已经是元组或列表,在这种情况下o返回。使用PySequence_Fast_GET_ITEM()来访问结果的成员。失败时返回NULL。如果对象不是序列或可迭代的,则使用TypeError引发m作为消息文本.

Py_ssize_t PySequence_Fast_GET_SIZE( PyObject  *o)
返回o的长度,假设o由PySequence_Fast()返回且o不是NULL。大小也可以通过调用PySequence_Size()来o,但PySequence_Fast_GET_SIZE()更快,因为它可以假设o是一个listor元组
 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.

注意,如果列表调整大小,重新分配可能会重新定位items数组。所以,仅在序列无法更改的上下文中使用底层数组指针.

PyObject* PySequence_ITEM( PyObject  *o,Py_ssize_t  i)
Return value: New reference.

在失败的时候i或o返回NULL元素。PySequence_GetItem()的宏观形式,但没有检查PySequence_Check() o是真的,没有负面指示的调整.

评论被关闭。