如何在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