在Python中使用"else"是否有害?

11 投票
13 回答
3190 浏览
提问于 2025-04-15 11:36

在一个关于Python的try...else语句的问题的回答中,S.Lott提到:

其实,即使是在if语句中,else:也可能被滥用,导致非常糟糕的错误,这些错误很难找到。 [...]

在使用else:时要三思而后行。它通常会带来问题。除了在if语句中,尽量避免使用,甚至在那种情况下,也要考虑清楚地记录else的条件,以便让它变得明确。

这是一个广泛的看法吗?else被认为是有害的吗?

当然,你可以用它写出让人困惑的代码,但这对任何其他语言的结构都是一样的。即使是Python的for...else在我看来也是非常有用的(而try...else就没那么好了)。

13 个回答

7

我不会说使用else语句是有害的,但有时候它可能会让你陷入麻烦。比如说,当你需要根据输入的值进行处理,而这个输入值只有两个有效的选项时。如果你只检查其中一个选项,就可能会引入错误。

The only valid inputs are 1 and 2:

if(input == 1)
{
   //do processing
   ...
}
else
{
   //do processing 
   ...
}

在这个例子中,使用else会让所有除了1以外的值都被处理,而实际上应该只处理值为1和2的情况。

15

不,这并没有害处,反而是必要的。

总是应该有一个“兜底”的语句。所有的选择语句都应该有一个默认选项。在ML语言中,所有的模式匹配也应该有一个默认选项。

认为在一系列的if语句之后很难判断什么是真的,这是一种生活中的常态。计算机是最大的有限状态机,逐一列举每种可能性在任何情况下都是不现实的。

如果你真的担心在else语句中会有未知的错误被忽视,那在这里抛出一个异常真的那么难吗?

31

S.Lott 显然见过一些糟糕的代码。我们大家不都是这样吗?我并不认为使用 else 是有害的,尽管我见过有人用它写出糟糕的代码。在那些情况下,周围的代码也都很糟糕,所以为什么要把责任全推给 else 呢?

撰写回答