序列协议 – 抽象对象层(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.
在成功时返回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中的切片。返回
-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是真的,没有负面指示的调整.
评论被关闭。