切片对象¶
-
PyTypeObject PySlice_Type¶
- 属于 稳定 ABI.
切片对象的类型对象。 它与 Python 层�的
slice是相�的对象。
-
int PySlice_Check(PyObject *ob)¶
如果 ob 是一个 slice 对象则返回真值;ob 必须�为
NULL。 æ¤å‡½æ•°æ€»æ˜¯ä¼šæˆ�功执行。
-
PyObject *PySlice_New(PyObject *start, PyObject *stop, PyObject *step)¶
- 返回值:新的引用。 属于 稳定 ABI.
返回一个具有给定值的新切片对象。 start, stop å’Œ step å½¢å�‚会被用作 slice 对象相应å��称的属性的值。 这些值ä¸çš„任何一个都å�¯ä»¥ä¸º
NULL,在这ç§�情况下将使用None作为对应属性的值。 å¦‚æžœæ–°å¯¹è±¡æ— æ³•è¢«åˆ†é…�则返回NULL。
-
int PySlice_GetIndices(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)¶
- 属于 稳定 ABI.
从切片对象 slice �� start, stop 和 step 索引�,将�列长度视为 length。 大于 length 的�列�将被当作错误。
�功时返回
0,出错时返回-1并且ä¸�设置异常(除é�žæŸ�个索引å�·ä¸�为Noneä¸”æ— æ³•è¢«è½¬æ�¢ä¸ºæ•´æ•°ï¼Œåœ¨è¿™ç§�情况下将返回-1å¹¶ä¸”è®¾ç½®ä¸€ä¸ªå¼‚å¸¸ï¼‰ã€‚ä½ å�¯èƒ½ä¸�会打算使用æ¤å‡½æ•°ã€‚
在 3.2 版本�生�更: 之� slice 形�的形�类型是
PySliceObject*。
-
int PySlice_GetIndicesEx(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, Py_ssize_t *slicelength)¶
- 属于 稳定 ABI.
PySlice_GetIndices()çš„å�¯ç”¨æ›¿ä»£ã€‚ 从切片对象 slice æ��å�– start, stop å’Œ step 索引å�·ï¼Œå°†åº�列长度视为 length,并将切片的长度ä¿�å˜åœ¨ slicelength ä¸ï¼Œè¶…出范围的索引å�·ä¼šä»¥ä¸Žæ™®é€šåˆ‡ç‰‡ä¸€è‡´çš„æ–¹å¼�进行剪切。æˆ�功时返回
0,出错时返回-1并且�设置异常。备注
æ¤å‡½æ•°å¯¹äºŽå�¯å�˜å¤§å°�åº�列æ�¥è¯´æ˜¯ä¸�安全的。 对它的调用应被替æ�¢ä¸º
PySlice_Unpack()å’ŒPySlice_AdjustIndices()的组å�ˆï¼Œå…¶ä¸if (PySlice_GetIndicesEx(slice, length, &start, &stop, &step, &slicelength) < 0) { // return error }
会被替�为
if (PySlice_Unpack(slice, &start, &stop, &step) < 0) { // return error } slicelength = PySlice_AdjustIndices(length, &start, &stop, step);
在 3.2 版本�生�更: 之� slice 形�的形�类型是
PySliceObject*。在 3.6.1 版本�生�更: 如果
Py_LIMITED_API未设置或设置为0x03050400与0x03060000之间的值(�包括边界)或0x03060100或更大则PySlice_GetIndicesEx()会被实现为一个使用PySlice_Unpack()和PySlice_AdjustIndices()的�。 �数 start, stop 和 step 会被多被求值。自 3.6.1 版本弃用: 如果
Py_LIMITED_API设置为�于0x03050400或0x03060000与0x03060100之间的值(�包括边界)则PySlice_GetIndicesEx()为已弃用的函数。
-
int PySlice_Unpack(PyObject *slice, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)¶
- 属于 稳定 ABI 自 3.7 版开始.
从切片对象ä¸å°† start, stop å’Œ step æ•°æ�®æˆ�员æ��å�–为 C 整数。 会é�™é»˜åœ°å°†å¤§äºŽ
PY_SSIZE_T_MAX的值��为PY_SSIZE_T_MAX,�默地将�于PY_SSIZE_T_MIN的 start 和 stop 值增大为PY_SSIZE_T_MIN,并�默地将�于-PY_SSIZE_T_MAX的 step 值增大为-PY_SSIZE_T_MAX。出错时返回
-1,æˆ�功时返回0。在 3.6.1 ç‰ˆæœ¬åŠ å…¥.
-
Py_ssize_t PySlice_AdjustIndices(Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t step)¶
- 属于 稳定 ABI 自 3.7 版开始.
å°† start/end 切片索引å�·æ ¹æ�®æŒ‡å®šçš„åº�列长度进行调整。 超出范围的索引å�·ä¼šä»¥ä¸Žæ™®é€šåˆ‡ç‰‡ä¸€è‡´çš„æ–¹å¼�进行剪切。
返回切片的长度。 æ¤æ“�作总是会æˆ�功。 ä¸�会调用 Python 代ç �。
在 3.6.1 ç‰ˆæœ¬åŠ å…¥.
Ellipsis 对象¶
-
PyObject *Py_Ellipsis¶
Python
Ellipsis对象。 æ¤æ²¡æœ‰æ²¡æœ‰ä»»ä½•方法。 åƒ�Py_Noneä¸€æ ·ï¼Œå®ƒæ˜¯ä¸€ä¸ª 永久性对象immortal。 并且属于å�•例对象。在 3.12 版本å�‘生å�˜æ›´:
Py_Ellipsis是永久性对象。