is 和 == 的区别


都是对象的比较

is 比较的是内存地址

1
2
3
4
5
>>>1 is 1
True
>>>[1, 2] is [1, 2]
False
# 因为 id([1, 2]) 都不同

== 是两个对象的__eq__方法返回的值进行比较

因此可以重载__eq__来实现不同对象的比较

1
2
3
4
5
6
7
8
9

class NewInt(int):
def __eq__(self, other):
return str(self) == str(other)


ni = NewInt(1)
print(ni == "1") # True


is 和 == 的区别
https://maocat.cc/2020/04/15/Python/is_or_==/
发布于
2020年4月15日
许可协议