Python 为什么str.find在没有找到子字符串时返回-1?
在另一个例子中,一些用户提出了以下想法Python 为什么str.find在没有找到子字符串时返回-1?,python,string,Python,String,在另一个例子中,一些用户提出了以下想法 word = s[:s.find(' ')] 只要字符串s包含空格,它就会工作。虽然如果它不包含一个,那么它会自动失败 s = 'foo' word = s[:s.find(' ')] # 'fo' 这是因为当未找到子字符串时,str.find返回-1 这似乎是一个奇怪的设计选择,原因如下 -1实际上是一个正确的索引 解释为bool,在 上下文 None似乎是一个更好的候选者(并且可以使上述代码正常工作) 在没有找到子字符串的情况下,为什么选择-1作为
word = s[:s.find(' ')]
只要字符串s
包含空格,它就会工作。虽然如果它不包含一个,那么它会自动失败
s = 'foo'
word = s[:s.find(' ')] # 'fo'
这是因为当未找到子字符串时,str.find
返回-1
这似乎是一个奇怪的设计选择,原因如下
-1
实际上是一个正确的索引bool
,在
上下文None
似乎是一个更好的候选者(并且可以使上述代码正常工作)在没有找到子字符串的情况下,为什么选择
-1
作为str.find
的返回值而不是None
,这有什么好的设计原因或用例吗?看起来像是泄露的C/C++API。我也有这样的印象,但我觉得CPython开发人员总体上做出了非常好的设计选择,特别是自从Python3以来,我很惊讶,不知道我是否错过了一个好的用例。不确定你会从任何邮件存档中得到一个明确的答案,但这里是关于str.find
@miradulo这就是我想要的信息,谢谢you@Olivier没问题。我记得有一次,我在源代码中翻找一条注释,其中包含-1对无的推理,但没有找到任何结果。