我想弄清楚如何解决我来到这里的 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)
我不知道从这里去哪里。
表达式
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
(布尔值)。