is-literal (F632)
派生自 Pyflakes 代码检查器。
修复总是可用的。
作用
检查是否针对字面量(如整数、字符串或列表)进行 is 和 is not 比较。
为什么这不好?
is 和 is not 比较器根据标识操作,它们检查两个对象是否是同一个对象。如果对象不是同一个对象,则比较结果将始终为 False。将 is 和 is not 与常量字面量一起使用通常“偶然”有效,但不能保证产生预期的结果。
从 Python 3.8 开始,将 is 和 is not 与常量字面量一起使用会产生 SyntaxWarning。
此规则还将标记针对非常量字面量(如列表、集合和字典)的 is 和 is not 比较。虽然此类比较不会引发 SyntaxWarning,但它们仍然可能是错误的,因为它们将比较对象的标识而不是它们的值,这将始终评估为 False。
相反,使用 == 和 != 来比较字面量,这将比较对象的值而不是它们的标识。
示例
建议改为