我是否应该始终使用“ else:”,即使没有必要?

时间:2019-08-19 09:05:12

标签: python

我必须在这里使用<sonar.sources>src/main</sonar.sources>还是我有机会删除它,只需键入else:

return True

编辑:我知道如何使此代码紧凑而仅返回一个。主要问题是关于def some_function(x): if another_function(x) == -1: return False else: return True

5 个答案:

答案 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

对吗?

但这不仅涉及外观:

  • 像这样的其他语言使您容易混淆缩进级别。
  • 由于缩进占用了很少的字符,因此行宽变小了,您可能需要更多地设置代码格式以适合PEP8。
  • 有时您首先编写代码的主要部分,然后才发现边缘情况。诸如git之类的版本控制系统会将所有缩进的行标记为已更改(取决于配置),而您所做的唯一一件事就是在开头添加这些ifs!

答案 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