【问题标题】:why does pylint complain about Unnecessary "elif" after "return" (no-else-return)?为什么pylint在“return”(no-else-return)之后抱怨不必要的“elif”?
【发布时间】:2020-12-24 14:19:19
【问题描述】:

为什么 pylint 抱怨这个代码块?

R1705: Unnecessary "elif" after "return" (no-else-return)

def f(a):
    if a == 1:
        return 1
    elif a == 2:
        return 2
    return 3

为了防止错误,我不得不创建一个临时变量,这感觉不太愉快。

def f(a):
    if a == 1:
        b = 1
    elif a == 2:
        b = 2
    else:
        b = 3

    return b

解决方案

def f(a):
    if a == 1:
        return 1
    if a == 2:
        return 2
    return 3

【问题讨论】:

    标签: pylint


    【解决方案1】:

    else 块的目的是定义在条件为真时执行的代码,因此不会继续执行到下一个块。

    但是,在您的代码中,主条件块有一个 return 语句,这意味着执行将离开函数,因此不需要 else 块:根据定义,如果条件为真。这是多余的。可以用简单的if替换。

    【讨论】:

    • elif 是“else if”的缩写。
    • 但是代码非常好,而且很有意义,对吧?这是 pylint 的限制/错误吗?
    • 代码中包含多余的 else 语句,pylint 会通知你,这正是它的工作。
    • 我明白了。编码这种逻辑的推荐方法是什么?
    • 只需将 elif 替换为 if - 在这种情况下,它们在语义上是相同的,没有多余的隐式 else。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 2011-03-16
    • 1970-01-01
    • 2015-06-03
    • 2017-12-02
    • 1970-01-01
    相关资源
    最近更新 更多