假设我有一个带有return的if语句。从效率的角度来看,我应该使用
if(A > B):
return A+1
return A-1
or
if(A > B):
return A+1
else:
return A-1
在使用编译语言(C)或脚本语言(Python)时,我应该选择其中一种还是另一种?
假设我有一个带有return的if语句。从效率的角度来看,我应该使用
if(A > B):
return A+1
return A-1
or
if(A > B):
return A+1
else:
return A-1
在使用编译语言(C)或脚本语言(Python)时,我应该选择其中一种还是另一种?
当前回答
从性能的角度来看,这在Python中并不重要,我认为对所有现代语言都是如此。
归根结底是风格和可读性。第二个选项(if-else块)比第一个更具可读性,而且比一行三元操作可读性强得多。
其他回答
来自Chromium的风格指南:
返回后不要使用else:
# Bad
if (foo)
return 1
else
return 2
# Good
if (foo)
return 1
return 2
return 1 if foo else 2
由于return语句终止了当前函数的执行,因此这两种形式是等效的(尽管可以说第二种形式比第一种形式更易于阅读)。
这两种形式的效率是相当的,如果if条件为假,底层机器码必须执行跳转。
注意,Python支持一种语法,允许你在你的情况下只使用一个return语句:
return A+1 if A > B else A-1
任何明智的编译器,你应该观察到没有区别;它们应该被编译为相同的机器代码,因为它们是等效的。
从性能的角度来看,这在Python中并不重要,我认为对所有现代语言都是如此。
归根结底是风格和可读性。第二个选项(if-else块)比第一个更具可读性,而且比一行三元操作可读性强得多。
如果可能的话,我个人会尽量避免其他阻塞。参见反if运动
而且,他们不收“额外”的费用,你知道:p
“简单胜于复杂”&“可读性为王”
delta = 1 if (A > B) else -1
return A + delta