if表达式可以替换为'test'(简化if表达式)

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

我想弄清楚如何解决我来到这里的 Pylint 问题。我是编码和 Python 的新手,从来没有真正学过如何简化 if 表达式。

我从这个开始

if variable_name == Labels.INVALID:
    marked_invalid = True
else:
    marked_invalid = False

Pylint 给了我一个错误的说法:

The if statement can be replaced with 'var = bool(test)' (simplifiable-if-statement)

所以我把它改成这样:

marked_invalid = True if variable_name == Labels.INVALID else False

现在我收到上面的错误信息

The if expression can be replaced with 'test' (simplifiable-if-expression)

我不知道从这里去哪里。

python if-statement pylint
1个回答
5
投票

表达式

variable_name == Labels.INVALID
的值为
True
False
,您正在测试此值以查看是否应将
True
False
分配给
marked_invalid

pylint 的建议是您直接分配值,无需测试:

marked_invalid = variable_name == Labels.INVALID

有时我会在表达式周围添加括号,以避免将其与多重赋值混淆 (

a = b = C
)。没有必要,但(可以说)有助于提高可读性:

marked_invalid = (variable_name == Labels.INVALID)

如果

variable_name == Labels.INVALID
为真,则marked_invalid为真;如果它是假的,那么 marked_invalid 将是假的。

建议提到

bool(
是因为你的条件不一定只是
True/False
。例如,如果列表非空,
if my_list:
就会成功。所以它建议
bool(
强制值是
True/False
(布尔值)。

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