跳到内容

needless-bool (SIM103)

源自 flake8-simplify 代码检查器。

有时提供修复。

作用

检查可以用 bool 替换的 if 语句。

为什么这不好?

对于真值条件返回 True,对于假值条件返回 Falseif 语句可以用布尔类型转换代替。

示例

给定

def foo(x: int) -> bool:
    if x > 0:
        return True
    else:
        return False

建议改为

def foo(x: int) -> bool:
    return x > 0

或者,给定

def foo(x: int) -> bool:
    if x > 0:
        return True
    return False

建议改为

def foo(x: int) -> bool:
    return x > 0

修复安全性

此修复被标记为不安全,因为它可能会改变程序的行为,如果条件没有返回正确的布尔值。虽然该修复会尝试将非布尔值包装在对 bool 的调用中,但比较函数(如 __eq__)的自定义实现可以避免 bool 调用,并且仍然会导致行为改变。

参考