类型比较 (E721)
源自 pycodestyle linter。
作用
检查使用 ==
和其他比较运算符进行对象类型比较的情况。
为什么这不好?
与直接类型比较不同,isinstance
还会检查对象是否是类或其子类的实例。
如果要检查精确的类型匹配,请使用 is
或 is not
。
已知问题
当使用覆盖 ==
(__eq__
) 运算符的库(例如 NumPy、Pandas 和 SQLAlchemy)时,此规则可能会产生误报,因为从 ==
转换为 is
或 is not
会改变代码的行为。
例如,以下操作不等效
import numpy as np
np.array([True, False]) == False
# array([False, True])
np.array([True, False]) is False
# False
示例
建议改为