布尔函数:if语句或简单返回

时间:2010-08-29 00:30:04

标签: boolean return if-statement

我正在检查朋友的代码,每当他编写返回布尔值的函数时,这个模式就出现了很多:

def multiple_of_three(n):
    if (n % 3) is 0:
       return True
    else:
       return False

我认为写它更简单(也许更快):

def multiple_of_three(n):
    return (n % 3) is 0

我是否认为第二次实施更快?此外,它是否不那么可读或以某种方式不赞成?

3 个答案:

答案 0 :(得分:3)

我非常怀疑有一个编译器或解释器仍然存在明显的速度差异 - 大多数情况下会产生完全相同的代码。但是,在我看来,你的“直接回归”方法更清晰,更易于维护。

答案 1 :(得分:3)

我不能谈论Python解释器的确切行为,但仅仅出于“更快”的原因,那样做一种方式(在任何语言中)是错误的,并且有资格称为“过早”优化”。正如Paul Tomblin在另一个答案中所说,速度的差异(如果有的话)可以忽略不计。然而,通常的做法确实在这种情况下第二种形式更具可读性。如果表达式是隐式布尔值,则if语句包装器是无意义的。

另见http://en.wikipedia.org/wiki/Program_optimization#When_to_optimize

答案 2 :(得分:0)

第二种形式是首选形式。根据我的经验,第一种形式通常是缺乏经验的程序员的标志(这并不仅仅适用于Python - 这在大多数语言中都有用)。