(Python)当使用`is`时,`2`与`[2]`有什么不同?

时间:2016-05-07 04:00:26

标签: python python-3.x

a = 2
b = 2
print(b is a)
a = [2]
b = [2]
print(b is a)

第一个print返回True,第二个print返回False。那是为什么?

2 个答案:

答案 0 :(得分:4)

在Python中,小内注被记忆为更有效。

因此,b is aTrue,因为它们在内存中的位置相同。

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