我现在真的很困惑:
>>> 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?
答案 0 :(得分:1)
在Python中切换字符串string[100:105]
时,操作专门设计为优雅地失败。超出范围切片的结果是返回空字符串''。有关详细信息,请参阅Informal Introduction。
访问字符串的特定索引时,string[100]
的设计不能正常失败,因此会引发异常。
答案 1 :(得分:0)
python中的字符串切片不会引发错误,它们只返回您要查找的字符串(在这种情况下,它确实是一个空字符串,因为那里没有任何内容)。
将返回物品的子序列切片,并且不进行任何绑定检查。如果想要的数据(内存)为空,它会在你得到的时候发回一个空字符串。