如果myStr =' test',为什么myStr [4]会产生超出范围的错误,但myStr [4:]却没有?

时间:2016-08-03 00:40:26

标签: python recursion

我使用递归来迭代字符串的值。当我越过最后一个字符时,它允许我将该索引位置用作空字符串""而不是给出错误。那是为什么?

myStr = 'test'
print(myStr[4])

产生错误

print(myStr[4:]) 

不会产生任何错误。

3 个答案:

答案 0 :(得分:5)

切片不受内置类型的限制。如果数组索引超出范围,它将自动截断,然后在正确的位置。

答案 1 :(得分:0)

因为数组访问被定义为单个索引超出范围而不是(部分或全部)切片的错误。如果切片的任何部分超出范围,则不会产生任何结果,而是触发错误。

答案 2 :(得分:-1)

Python 3.0 documentation

字符串
  

尝试使用过大的索引会导致错误。但是,超出范围的切片索引在用于切片时会正常处理