跳到内容

repeated-equality-comparison (PLR1714)

源自 Pylint 代码检查工具。

修复总是可用的。

作用

检查可以重写为成员关系测试的重复相等比较。

此规则将尝试确定这些值是否可哈希,如果可哈希,则修复将使用 set。 如果无法确定,修复将使用 tuple 并建议使用 set

为什么这不好?

要检查变量是否等于多个值中的一个,通常会编写一系列相等比较(例如,foo == "bar" or foo == "baz")。

相反,建议将值组合成一个集合,并使用 in 运算符来检查成员关系,这更高效且更简洁。 如果项目是可哈希的,请使用 set 以提高效率;否则,请使用 tuple

修复安全性

此规则始终是不安全的,因为文字集合和元组会急切地评估它们的成员,而 or 比较会被短路。 因此,在存在副作用的情况下,修复可能会改变行为。

示例

foo == "bar" or foo == "baz" or foo == "qux"

建议改为

foo in {"bar", "baz", "qux"}

参考