为什么 pylint 在“return”(no-else-return)之后抱怨不必要的“elif”?

问题描述 投票:0回答:2

为什么 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
python pylint
2个回答
16
投票

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

if

代替。

    


0
投票

pylint 喜欢传递技术上正确但无用的消息。

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

可能比
更具可读性

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

对于许多用户来说,仅仅是因为它看起来像一个 
switch 语句

Python 3.10 中的大小写匹配

“结构模式匹配”

已添加到Python 3.10中。它的语法功能强大且用途广泛。其中,它允许简单的示例,看起来像 switch 语句: """ https://stackoverflow.com/questions/63755912/ why-does-pylint-complain-about-unnecessary-elif-after-return-no-else-return """ def match_case_example(value): """ Simple match-case example, for python 3.10+ see https://peps.python.org/pep-0622/ """ match value: case 1: return 1 case 2: return 2 case _other: return 3 print(match_case_example(4)) # 3

Pylint 没有 
任何东西

可以抱怨这个脚本,只要你有 Python 3.10 或更高版本。

© www.soinside.com 2019 - 2024. All rights reserved.