a = 2
b = 2
print(b is a)
a = [2]
b = [2]
print(b is a)
第一个print
返回True
,第二个print
返回False
。那是为什么?
答案 0 :(得分:4)
在Python中,小内注被记忆为更有效。
因此,b is a
为True
,因为它们在内存中的位置相同。
is
检查对象标识。如果您要检查使用==
除了None
之外的其他情况,那么使用is
似乎已达成一致意见
>>> a = 2
>>> b = 2
>>> id(a)
1835382448
>>> id(b)
1835382448
答案 1 :(得分:0)
is
检查对象标识(列表a
与列表b
相同的实例)。并且==
比较值标识(存储在变量a
中的内容等同于存储在变量b
中的内容)
所以在你的情况下。 [2]
是值,而变量a
和变量b
都存储了此值,它们不相同(您可以修改a
和{{1} }不会改变)
如果您添加了另一个变量并将其指向b
,则可能会看到此行为:
a