【发布时间】:2012-03-18 09:41:44
【问题描述】:
为什么'example'[999:9999] 不会导致错误?既然'example'[9]做到了,那背后的动机是什么?
根据这种行为,我可以假设 'example'[3] 在本质上/在内部与 'example'[3:4] 不同,即使两者都产生相同的 'm' 字符串。
【问题讨论】:
-
[999:9999]不是索引,而是切片,并且具有不同的语义。从 python 介绍:“退化的切片索引被优雅地处理:一个太大的索引被字符串大小替换,一个小于下限的上限返回一个空字符串。” -
@Wooble 是实际答案
-
@Wooble 你知道为什么会这样吗?感谢您的澄清。
-
为什么?你得问 Guido,但我认为能够假设一个片段总是与原始序列相同类型的序列,我自己。
-
@Lapinot 是的,我编写了依赖于这种行为的代码。不幸的是,我不记得确切的代码,所以我不能告诉你为什么。可能与子字符串有关;有时,获得一个空字符串可能正是您想要的。