-
杨魅力
答案在这里解释。报价:一个类可以按照它选择的任何方式自由地实现比较,并且它可以选择与None进行比较意味着什么(实际上是有意义的;如果有人告诉你从头开始实现None对象,那么你怎么能得到它来比较True反对自己?)。实际上,由于自定义比较运算符很少,因此差别不大。但你应该is None作为一般规则使用。
-
不负相思意
class Foo: def __eq__(self,other): return Truefoo=Foo()print(foo==None)# Trueprint(foo is None)# False
-
慕盖茨4494581
在这种情况下,它们是相同的。None是一个单例对象(只存在一个None)。is 检查对象是否是同一个对象,而==只是检查它们是否相同。例如:p = [1]q = [1]p is q # False because they are not the same actual objectp == q # True because they are equivalent但由于只有一个None,它们将始终相同,is并将返回True。p = Noneq = Nonep is q # True because they are both pointing to the same "None"