Python中'is'运算符的语义是什么?
is
操作符是用来判断两个对象是否是同一个东西的。简单来说,它会检查这两个对象的内存地址,也就是它们在计算机里的存放位置。如果这两个对象的地址是一样的,说明它们是同一个对象;如果地址不同,那它们就是两个不同的对象。
3 个回答
7
补充一下其他答案的内容,你可以把 a is b
理解成 is_(a, b)
这个样子:
def is_(a, b):
return id(a) == id(b)
需要注意的是,你不能直接把 a is b
替换成 id(a) == id(b)
,不过上面的函数通过参数避免了这个问题。
14
这个运算符的工作原理是比较两个对象,看看它们是否指向同一个东西。
>>> a = [1, 2]
>>> b = a
>>> a is b
True
>>> c = [1, 2]
>>> a is c
False
c
不是和 a
一样的列表,所以 is
的关系是假的。
14
根据文档的内容:
每个对象都有一个身份、一个类型和一个值。对象的身份一旦创建就不会改变;你可以把它想象成对象在内存中的地址。‘is’运算符用来比较两个对象的身份;而id()函数则返回一个整数,表示这个对象的身份(目前实现上是它的地址)。
这似乎说明它比较的是参数的内存地址,虽然文中提到“你可以把它想象成对象在内存中的地址”,这可能意味着具体的实现并不一定如此;只有它的含义是固定的。