为什么list.index抛出异常,而不是使用任意值(例如-1
)?这背后有什么想法?
对我而言,处理特殊价值而非例外情况看起来更清晰.
编辑:我没有意识到这-1
是一个潜在有效的价值.不过,为什么不是别的呢?无价值怎么样?
因为-1
它本身是一个有效的索引.它可以使用不同的值,例如None
,但是没有用,这-1
可能在其他情况下(因此str.find()
),并且仅仅是错误检查,这正是异常的用途.
添加Devin的回答:这是特殊回报值与异常之间的旧争论.许多编程专家更喜欢异常,因为在异常情况下,我会看到整个堆栈跟踪并立即推断出错误.
那么,特殊值实际上必须是None
,因为-1是一个有效的索引(意味着列表的最后一个元素).
您可以通过以下方式模拟此行为:
idx = l.index(x) if x in l else None