为什么pylint在"return"(no-else-return)之后抱怨Unnecessary "elif"?

why does pylint complain about Unnecessary "elif" after "return" (no-else-return)?

为什么 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

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

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

代替