You are here:  Home » Python » 序列协议 – 抽象对象层(Python教程)(参考资料)

序列协议

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.

在成功时返回o1o2的串联,在失败时返回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_InPlaceConcatPyObject  *o1,PyObject  *o2
Return value: New reference.

返回成功时o1o2的串联,NULLin-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.

在失败的时候io返回NULL元素。这相当于Python表达式o[i].

PyObject * PySequence_GetSlice PyObject  *o,Py_ssize_t  i1,Py_ssize_t  i2
Return value: New reference.

oi1i2 onfailure之间返回序列对象NULL的切片。这相当于Python表达式o[i1:i2].

int PySequence_SetItem PyObject  *o,Py_ssize_t  i,PyObject  *v
将对象v分配给io。提出异常并在失败时返回-1;成功时返回0。这相当于Python语句o[i] = v。这个函数doesnot窃取对v.

的引用如果vNULL,该元素被删除,但是这个特性是有利于使用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分配给序列对象中的切片oi1i2。这相当于Python语句o[i1:i2] = v.
int PySequence_DelSlice PyObject  *o,Py_ssize_t  i1,Py_ssize_t  i2
oi1删除序列对象i2中的切片。返回-1 onfailure。这相当于Python语句del o[i1:i2].
Py_ssize_t PySequence_Count PyObject  *o,PyObject  *value
返回valueo的出现次数,即返回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
返回第一个索引io[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的长度,假设oPySequence_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,假设oPySequence_Fast(), o退回//不是NULL,那i是在绑定内.

PyObject** PySequence_Fast_ITEMS PyObject  *o
返回PyObject指针的基础数组。假设oPySequence_Fast()返回o不是NULL.

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

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

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

评论被关闭。