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

我写了一个小函数来返回字符串列表中第一次出现字符串的索引,使用“模糊”比较。

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

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


你可以返回None它是空对象。

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


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

提出一个错误

raise ValueError("String Not Found")

Python是一种鸭子语言; 请参阅:http://en.wikipedia.org/wiki/Duck_typing,因此它是完全可以接受和接受的惯例,以“提出适当的错误”。

更新:像往常一样,现在已经有了几个答案,评论甚至是使用raise ValueError建议。 IHMO我认为IndexError更合适; 但这可能是一个风格和个人品味的问题。 另请阅读:Python的禅 - 专门围绕“应该有一个 - 并且最好只有一个 - 明显的方式来实现它”。

更新二:我认为为了一致性的缘故,Pyton的内建list.index()str.index() raise ValueError(...)应该使用raise ValueError(...)


根据Python文档;

str.rindex; Like rfind() but raises ValueError when the substring sub is not found.

str.rfind(); Return -1 on failure

如果你想保持与Python的std库相同的设计,考虑到你的函数和str.rindex几乎一样,然后引发ValueError()。 但是,如果你的函数更像rfind,那么返回-1。

如果你不关心遵循与​​std库相同的设计原则,那么使用你喜欢的任何风格。

请参阅http://docs.python.org/2/library/stdtypes.html#str.count

链接地址: http://www.djcxy.com/p/76631.html

上一篇: How to signal "index not found" in Python Function result

下一篇: defined function for determining NaN or Null is not working