关于索引:如何在Python函数结果中发出“索引未找到”的信号

How to signal “index not found” in Python Function result

我正在编写一个小函数,用"模糊"比较返回字符串列表中第一个出现的字符串的索引。

我的问题是:什么是表示目标字符串与源列表中任何字符串都不匹配的正确方法?

显而易见的(只是?)要做的是返回-1。但由于python中的-1意味着序列的最后一个元素,所以我发现这可能不是好的python样式。有更多的Python吗?方式?


My question is: what is the proper way to signify the target string not matching any in the source list?

出现错误:

1
raise ValueError("String Not Found")

python是一种duck类型的语言;请参见:http://en.wikipedia.org/wiki/duck_typing,因此"提出适当的错误"是完全可以接受和接受的约定。

更新:和往常一样,现在已经有几个答案和评论,甚至使用raise ValueError的建议。我认为江户一〔1〕更合适,但这可能是风格和个人品味的问题。另外,请阅读:python的禅宗——特别是围绕"应该有一种——最好只有一种——显而易见的方法来完成它"。

更新二:为了保持一致性,我想应该使用Pyton的内置list.index()str.index()raise ValueError(...)


根据python文档;

R指数;Like rfind() but raises ValueError when the substring sub is not found.

STR.rFED();Return -1 on failure

如果您希望保持与python的std libs相同的设计,考虑到您的函数与str.rindex执行的操作几乎相同,则会引发valueerror()。但是,如果您的函数更像rfind,那么返回-1。

如果您不关心保持与std libs相同的设计原则,那么使用您喜欢的任何样式。

参见http://docs.python.org/2/library/stdtypes.html str.count


您可以返回None,这是空对象。

要检查结果,您将使用is运算符。在python中检查空对象?