“如何发出信号”;“未找到索引”;Python函数结果中的
我正在编写一个小函数,使用“模糊”比较返回字符串列表中第一次出现的字符串的索引 我的问题是:什么是表示目标字符串与源列表中的任何字符串都不匹配的正确方法 显然(唯一?)要做的是返回-1。但是,由于Python中的-1表示序列的最后一个元素,我觉得这可能不是好的Python风格。有没有一种更像蟒蛇的方式 我的问题是:什么是表示目标字符串与源列表中的任何字符串都不匹配的正确方法 您引发了一个错误:“如何发出信号”;“未找到索引”;Python函数结果中的,python,indexing,Python,Indexing,我正在编写一个小函数,使用“模糊”比较返回字符串列表中第一次出现的字符串的索引 我的问题是:什么是表示目标字符串与源列表中的任何字符串都不匹配的正确方法 显然(唯一?)要做的是返回-1。但是,由于Python中的-1表示序列的最后一个元素,我觉得这可能不是好的Python风格。有没有一种更像蟒蛇的方式 我的问题是:什么是表示目标字符串与源列表中的任何字符串都不匹配的正确方法 您引发了一个错误: raise ValueError("String Not Found") Python是一种鸭式的语
raise ValueError("String Not Found")
Python是一种鸭式的语言;请看:所以“提出适当的错误”是完全可以接受和接受的惯例
更新:像往常一样,到目前为止已经有了一些答案,并提出了使用raisevalueerror
的意见甚至建议。IHMO我认为索引器
更合适;但这可能是风格和个人品味的问题。还可以阅读:——特别是在“应该有一种——最好只有一种——显而易见的方法来做这件事”这一行的周围
更新II:为了与Pyton的内置list.index()
和str.index()保持一致,我想应该使用:)
我的问题是:什么是表示目标字符串与源列表中的任何字符串都不匹配的正确方法
您引发了一个错误:
raise ValueError("String Not Found")
Python是一种鸭式的语言;请看:所以“提出适当的错误”是完全可以接受和接受的惯例
更新:像往常一样,到目前为止已经有了一些答案,并提出了使用raisevalueerror
的意见甚至建议。IHMO我认为索引器
更合适;但这可能是风格和个人品味的问题。还可以阅读:——特别是在“应该有一种——最好只有一种——显而易见的方法来做这件事”这一行的周围
更新II:为了与Pyton的内置list.index()
和str.index()保持一致,我想应该使用提升值错误(…)
:)您可以返回None
,这是空对象
要检查结果,请使用is
运算符。选中可以返回空对象None
要检查结果,请使用is
运算符。根据Python文档检查
str.rindex;
类似于rfind(),但在未找到子字符串sub时引发ValueError。
str.rfind();
故障时返回-1
如果您希望保持与Python的std libs相同的设计,假设您的函数执行的操作与str.rindex几乎相同,那么请引发ValueError()。但是,如果您的函数更像rfind,则返回-1
如果您不在乎保持与std LIB相同的设计原则,那么使用您喜欢的任何样式
参见Python文档中的
str.rindex;
类似于rfind(),但在未找到子字符串sub时引发ValueError。
str.rfind();
故障时返回-1
如果您希望保持与Python的std libs相同的设计,假设您的函数执行的操作与str.rindex几乎相同,那么请引发ValueError()。但是,如果您的函数更像rfind,则返回-1
如果您不在乎保持与std LIB相同的设计原则,那么使用您喜欢的任何样式
请参阅@jornsharpe谢谢:)这到底是不是野兽(Python)的本性。话虽如此,它确实使用了ValueError
。我猜是因为错误与sub
参数有关(它不是要查找的有效子字符串);实际上没有下标。@jornsharpe这是True
:)我将更新ValueError
的答案,因为list.index()
和str.index()
两者都提出了这一点——同样是为了一致性:)我仍然认为最好提出索引器
,但哦,好吧:)@jornsharpe谢谢:)这毕竟是野兽(Python)的本性。话虽如此,确实使用了ValueError
。我猜是因为错误与sub
参数有关(它不是要查找的有效子字符串);实际上没有下标。@jornsharpe这是True
:)我会更新我对ValueError
的答案,因为list.index()
和str.index()
都提出了这个问题——同样是为了一致性:)我仍然认为提出indexer
更好,但哦,好吧:)谢谢大家提出的好建议。作为Python新手,我没有想到引发异常。对我来说,并行索引方法的想法似乎是最具Python风格的(Python风格?)。然而,我可能会选择None路线,因为我确实发现带try/exception子句的Pepper One代码有点麻烦。再次,非常感谢。感谢大家提出的好建议。作为Python新手,我没有想到引发异常。对我来说,并行索引方法的想法似乎是最具Python风格的(Python风格?)。然而,我可能会选择None路线,因为我确实发现带try/exception子句的Pepper One代码有点麻烦。再次,非常感谢。