为什么子字符串切片索引超出范围在Python中起作用?

在序列范围之外进行切片(至少对于内置片段而言)不会导致错误。索引返回单个项目,但切片返回项目的子序列。因此,当您尝试为不存在的值建立索引时,没有任何返回值。但是当您在边界之外对序列进行切片时,您仍然可以返回空序列。例如:

>>> s = [1, 2, 3]
>>> s[5:8]
[]

但是,如果您只是使用索引超出范围,则会给您一个错误:

>>> s = [1, 2, 3]
>>> s[5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range