跳到内容

is-literal (F632)

派生自 Pyflakes 代码检查器。

修复总是可用的。

作用

检查是否针对字面量(如整数、字符串或列表)进行 isis not 比较。

为什么这不好?

isis not 比较器根据标识操作,它们检查两个对象是否是同一个对象。如果对象不是同一个对象,则比较结果将始终为 False。将 isis not 与常量字面量一起使用通常“偶然”有效,但不能保证产生预期的结果。

从 Python 3.8 开始,将 isis not 与常量字面量一起使用会产生 SyntaxWarning

此规则还将标记针对非常量字面量(如列表、集合和字典)的 isis not 比较。虽然此类比较不会引发 SyntaxWarning,但它们仍然可能是错误的,因为它们将比较对象的标识而不是它们的值,这将始终评估为 False

相反,使用 ==!= 来比较字面量,这将比较对象的值而不是它们的标识。

示例

x = 200
if x is 200:
    print("It's 200!")

建议改为

x = 200
if x == 200:
    print("It's 200!")

参考