Python中-1的优雅检查

Python中-1的优雅检查,python,string,Python,String,是否有一种优雅的方法来检查str.find()instance方法返回的值-1?我发现测试-1的值非常难看,但我也不想说

是否有一种优雅的方法来检查
str.find()
instance方法返回的值-1?我发现测试-1的值非常难看,但我也不想说<0,因为这可能会引起混淆

if (myString.find('foo') == -1):
    print("foo not found in ", myString)
如果不需要索引,请不要使用
str.find()
。使用中的
来测试子字符串;或者在这种情况下,
不在
中以否定测试:

if 'foo' not in myString:
    print("foo not found in", myString)

作为参考,在您确实需要索引的情况下,可以使用另一个字符串实例方法来查找它:

str.index
str.find
之间的区别在于,如果未找到子字符串,则
str.index
rise ValueError
,这可能更适合您的用例(例如,如果您预期子字符串通常会出现):


我想知道是
=-1
还是
<0
在处理器级别得到了更好的优化。如果处理器是智能的,那么
<0
只需要检查一位,这非常快。不过,我的计算机体系结构课程已经很久没有上了。@TheSoundDefense:这是Python,不是C
-1
0
是对象,在CPython的情况下,这些对象恰好是内部对象(所有介于-1和255之间的小整数都是内部对象),Python所要做的就是在使用
==
@MartijnPieters时测试指针是否相等,我没有考虑到这一点。我所有的C语言学习都是为了帮助我使用Python。我需要重新训练我的大脑。谢谢,我不知怎的不知道“in”的存在!
try:
    index = myString.index("foo")
except ValueError:
    print("'foo' not found in '{0}'.".format(myString))
else:
    # 'foo' was found, 'index' has been assigned