我必须在这里使用<sonar.sources>src/main</sonar.sources>
还是我有机会删除它,只需键入else:
return True
编辑:我知道如何使此代码紧凑而仅返回一个。主要问题是关于def some_function(x):
if another_function(x) == -1:
return False
else:
return True
。
答案 0 :(得分:5)
即使没有必要,我也应该始终使用“ else:”吗?
我本人认为没有必要。如果出现边缘情况,则在函数的开头返回,可以让您有时跳过由else
引起的许多缩进:
def some_function(x):
if edge_case_1:
return []
if edge_case_2:
return None
#a
#lot
#of
#code
#here
return result
看起来比
好def some_function(x):
if edge_case_1:
return []
elif edge_case_2:
return None
else:
#a
#lot
#of
#code
#here
return result
对吗?
但这不仅涉及外观:
答案 1 :(得分:2)
您可以删除其他内容并执行以下操作:
def some_function(x):
if another_function(x) == -1:
return False
return True
答案 2 :(得分:2)
逻辑上你可以写
def some_function(x):
return another_function(x) != -1
答案 3 :(得分:0)
对于一般情况:由于return
此时退出函数并将控制权返回给调用者,因此首选惯用法是:
def foo(x):
if <some_expression>:
return <something>
# we'll only ever get here if `<some_expression>`'s value is false
return <something_else>
为什么它是首选的习惯用法(至少在python中是这样):普遍的共识是,它可以使代码更具可读性:1 /将其扁平化(减少缩进级别)和2 /从开始,因此名义案例代码不会受到此类考虑的污染。一般而言,代码越容易理解(至少对于人脑而言,“扁平”代码比嵌套代码更简单)。
现在,对于返回表达式的布尔值的情况,您根本不需要if
语句-您可以直接返回对表达式求值的结果:
def foo(x):
return some_test(x) != some_value
答案 4 :(得分:0)
其他在语法上不是强制性的,但是在少数情况下会出现错误
声明默认值:-
var1 = some_value
if condition:
var1 = "something"
return var1