使用if-return-return还是if-else-return更高效?

229 投票
9 回答
438994 浏览
提问于 2025-04-17 12:34

假设我有一个包含returnif语句。从效率的角度来看,我应该使用

if(A > B):
    return A+1
return A-1

还是

if(A > B):
    return A+1
else:
    return A-1

在使用编译语言(比如C)或脚本语言(比如Python)时,我应该更倾向于使用哪一种呢?

9 个回答

14

我个人尽量避免使用else语句块。可以看看这个反对使用if的活动

而且,你知道的,他们并不会因为这一行代码而额外收费 :p

“简单胜于复杂”和“可读性最重要”

delta = 1 if (A > B) else -1
return A + delta
58

来自Chromium的编码风格指南:

在使用return语句后,不要再写else:

# Bad
if (foo)
  return 1
else
  return 2

# Good
if (foo)
  return 1
return 2

return 1 if foo else 2
280

因为return语句会结束当前函数的执行,所以这两种写法是等价的(虽然第二种写法可能更容易理解)。

这两种写法的效率差不多,反正如果if条件不成立,底层的机器代码也得执行一次跳转。

需要注意的是,Python支持一种语法,可以让你在这种情况下只用一个return语句:

return A+1 if A > B else A-1

撰写回答