在另一个question that asks how to get the first word of a string without using str.split中,一些用户提出了以下想法。
word = s[:s.find(' ')]
只要字符串s
包含空格,它就会起作用。虽然如果它不包含一个,它会无声地失败。
s = 'foo'
word = s[:s.find(' ')] # 'fo'
这是因为str.find
在找不到子字符串时返回-1
。
由于以下原因,这似乎是一种奇怪的设计选择。
-1
实际上是一个正确的索引
解释为bool
,它没有任何有用的含义
上下文
None
似乎是一种更好的候选人(并且会使上述代码更有效)
有没有一个好的设计理由或用例,当没有找到子字符串时,为什么选择-1
作为str.find
而不是None
的返回值?