1

我现在真的很困惑:

>>> string = "some string"
>>> string[100:105]
''
>>> string[100]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range

为什么会string[100:105]返回一个空字符串而string[100]引发一个 IndexError(如预期的那样)?为什么不string[100:105]引发 IndexError 以及?

4

2 回答 2

1

在 Python 中对字符串进行切片时string[100:105],该操作专门设计为优雅地失败。超出范围切片的结果是返回空字符串 ''。有关详细信息,请参阅非正式介绍

访问字符串的特定索引,string[100]并没有设计为优雅地失败,因此会引发异常。

于 2017-03-08T19:38:45.133 回答
0

python中的字符串切片不会引发错误,它们只会返回您正在寻找的字符串(在这种情况下,它确实是一个空字符串,因为那里什么都没有)。

切片返回项目的子序列,并且不进行任何边界检查。如果想要的数据(内存)是空的,它会在你得到的时候发回一个空字符串。

于 2017-03-08T19:38:35.573 回答