在PEP 8标准中,here,以下建议的原因是什么:"与单身人士的比较,如无,应始终使用是或否,而不是等于运算符。&#34 ;
答案 0 :(得分:0)
==
和!=
是相等测试,他们调用__eq__
方法检查运算符的左侧是否代表与一个在右手边。
is
和is not
是身份测试,他们检查运营商的左侧和右侧是否引用了相同的对象
身份测试,因为:
他们阻止其他对象模仿单身对象:
class FakeNone:
def __eq__(self, other):
return other is None
print FakeNone() is None # False
print FakeNone() == None # True ... WHAT?
它们稍微快一点,因为它们不需要调用方法。
答案 1 :(得分:-2)
可能性能原因。 是比较直接比较id而不调用对象的 eq 。