首页 新闻 会员 周边 捐助

python用is判断,底层是比较什么的

0
[已解决问题] 解决于 2025-08-14 09:43

python用is判断,底层是比较什么的

_java_python的主页 _java_python | 小虾三级 | 园豆:1050
提问于:2025-08-14 09:40
< >
分享
最佳答案
0

is:比较 对象身份(内存地址)。
==:比较 对象内容(由 eq 决定),与地址无关。
解释器先把 a == b 翻译成
a.eq(b) 的调用(如果没有就退回到 id(a) == id(b))

class Point:
    def __init__(self, x, y):
        self.x, self.y = x, y
    def __eq__(self, other):
        return self.x == other.x and self.y == other.y

p1 = Point(1, 2)
p2 = Point(1, 2)
print(p1 == p2)   # True,内容一样即可,地址不同也没关系

只有没写 eq 的默认对象,才会退化成比较地址(等价于 is)

_java_python | 小虾三级 |园豆:1050 | 2025-08-14 09:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册