Skip to content

身份运算符

我们已经看到 Python 如何将每个值或数据项视为一个对象。

关系运算符 == 可用于测试操作数是否包含相同的值。

python
>>> n = 1
>>> n2 = 1
>>> n == n2
True

然而,此运算符不检查两个操作数是引用同一个对象还是不同的对象。

身份运算符 isis not 分别用于测试两个对象是否具有相同或不同的身份(指向内存中的相同位置)。

a is b 等效于 id(a) == id(b),其中 id() 是返回对象身份的内置函数。

python
>>> n = 1
>>> n2 = 1
>>> n is n2
True

在上面的示例中,变量 nn2 都指向相同的内存位置(同一个对象)。

python
>>> l = [1, 2, 3]
>>> l2 = [1, 2, 3]
>>> l == l2
True
>>> l is l2
False

在上面的示例中,列表 ll2 虽然包含具有相同值的项,但实际上是占用不同内存位置的两个不同对象。