序列协议 – 抽象对象层(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的对象数量,
-1onfailure。这相当于Python表达式len(o).
- PyObject *
PySequence_Concat( PyObject *o1,PyObject *o2) - Return value: New reference.
在成功时返回o1和o2的串联,在失败时返回NULL。这相当于Python表达式
o1 + o2.
- 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中的切片。返回
-1onfailure。这相当于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是真的,没有负面指示的调整.
评论被关闭。