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
。
相反,使用 ==
和 !=
来比较字面量,这将比较对象的值而不是它们的标识。
示例
建议改为