返回空字符串而不是IndexError

时间:2017-03-08 19:33:55

标签: python string slice index-error

我现在真的很困惑:

>>> 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?

2 个答案:

答案 0 :(得分:1)

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

访问字符串的特定索引时,string[100]的设计不能正常失败,因此会引发异常。

答案 1 :(得分:0)

python中的字符串切片不会引发错误,它们只返回您要查找的字符串(在这种情况下,它确实是一个空字符串,因为那里没有任何内容)。

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