我很惊讶地在here读到“
start
和step
参数默认为None
”,因为它还说:
slice(start, stop, step=1)
“返回一个切片对象,表示由范围(开始、停止、步长)指定的索引集。”
所以我预计
step
参数的默认参数值为 1
。
我知道
slice(a, b, None) == slice(a, b, 1)
返回 False
,但我很好奇 slice(a, b, None)
是否总是返回与 slice(a, b, 1)
相同的切片,或者是否有一些我无法想到的示例返回不同的切片。
我在有关切片的大量帖子中找不到任何相关内容这里
Slice 的步骤确实默认为
None
,但使用步骤 1
和 None
对于所有实际目的来说应该是等效的。这是因为在实际使用该步骤的 C 代码中,存在将 None
转换为 1
的检查:
int
PySlice_GetIndices(PyObject *_r, Py_ssize_t length,
Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
{
PySliceObject *r = (PySliceObject*)_r;
if (r->step == Py_None) {
*step = 1;
...
}
并且:
int
PySlice_Unpack(PyObject *_r,
Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step)
{
PySliceObject *r = (PySliceObject*)_r;
...
if (r->step == Py_None) {
*step = 1;
}
...
}