【发布时间】:2016-01-05 19:39:58
【问题描述】:
如果我使用== 比较两个变量,Python 是否会比较身份,如果它们不相同,则比较值?
例如,我有两个指向同一个字符串对象的字符串:
>>> a = 'a sequence of chars'
>>> b = a
这是比较值还是只比较 id?:
>>> b == a
True
首先比较身份是有意义的,我猜是这样,但我还没有在文档中找到任何支持这一点的东西。我最接近的是this:
x==y呼叫x.__eq__(y)
这并没有告诉我在调用 x.__eq__(y) 之前是否完成了任何操作。
【问题讨论】:
-
Python 回退相等 - 如果
__eq__未定义,a == b被评估为a is b,以确保比较总是有结果。 -
@jonrsharpe 这就是我的预期。它是否记录在任何地方?
-
@jonrsharpe 实际上,这不是我所期望的。如果定义了
__eq__,它会不会先检查id?
标签: python identity equality-operator