为什么Python在找不到子字符串时会抛出错误?

mel*_*oli 10 python string

这背后的设计思想是什么?

对我来说,更容易做类似的事情

if string.index(substring) > -1:
    # do stuff
Run Code Online (Sandbox Code Playgroud)

而不是试图捕捉异常.如果substring找不到,至少你的程序不会破坏.

有人告诉我'回归-1是一种糟糕的模式'.这是为什么?

检查子串的Pythonic方法是什么?

Mar*_*ers 15

str.index()抛出异常; 你可能会想到这个str.find()方法:

if string.find(substring) > -1:
Run Code Online (Sandbox Code Playgroud)

str.index()文件明确指出这一点:

喜欢find(),但是ValueError在找不到子串的时候会加注.

但是,测试子串成员资格的正确方法是使用in:

if substring in string:
Run Code Online (Sandbox Code Playgroud)