为什么str.find在没有找到子字符串的情况下返回-1?

时间:2018-02-22 03:41:15

标签: python string

在另一个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. -1实际上是一个正确的索引

  2. 解释为bool,它没有任何有用的含义 上下文

  3. None似乎是一种更好的候选人(并且会使上述代码更有效)

  4. 有没有一个好的设计理由或用例,当没有找到子字符串时,为什么选择-1作为str.find而不是None的返回值?

0 个答案:

没有答案