跳到内容

if-else-block-instead-of-if-exp (SIM108)

源自 flake8-simplify 代码检查器。

有时提供修复。

作用

检查可以使用三元或二元运算符替换的 if-else 块。

如果建议的替换会超过 pycodestyle.max-line-length 中配置的最大行长度,则会抑制此检查。

为什么这不好?

可以通过使用三元或二元运算符来更简洁地表达在两个分支中都为变量赋值的 if-else 块。

示例

if foo:
    bar = x
else:
    bar = y

建议改为

bar = x if foo else y

或者

if cond:
    z = cond
else:
    z = other_cond

建议改为

z = cond or other_cond

已知问题

这是一个有主观色彩的风格规则,可能并不总是符合每个人的口味,尤其是对于使用复杂 if 条件的代码。三元运算符也可能使使用行分析工具测量 代码覆盖率 变得更加困难。

参考