python 中 a is b
等价于id(a) == id(b)
,因此is
与 ==
是不同的。
a = 'abc'
b = 'abc'
print(id(a))
# 3206115244944
print(id(b))
# 3206115244944
根据 内存id来看,二者指向同一块内存。这就是python的驻留机制,但驻留机制是有局限的。它只对数字0 - 9, 字母a - z,已经下划线 _ 有效。比如下面的例子,由于有了空格的参与,驻留机制无法发挥作用。
c = 'ab c'
d = 'ab c'
print(id(c))
# 3206116210144
print(id(d))
# 3206115244944