Python中的对象包含三要素:id、type、value

其中id用来唯一标识一个对象,当我们使用is来进行判断两者是否相等时,就是使用其id值在进行比较

None is None
# True

a = 1; b = 1
a is b
# True

a = "myX"; b = "myX";
a is b
# True

a = 1.8; b = 1.8
a is b
# False

a = 3L; b = 3L
a is b
# False

a = 1+2j; b = 1+2j
a is b
# False

a = (1, 2); b = (1, 2)
a is b
# False

a = [1, 2]; b = [1, 2]
a is b
# False

a = {"male":1}; b = {"male": 1}
a is b
# False

https://gist.github.com/quietin/6ce45f460c31f6212f8d
python中一切都是对象,其中字符串和整数都是不可变对象,字符串存储在字符串对象池中,整数则存储在整数对象池。
如上代码所示,a和b均会指向"myX"所占的内存空间,所以其id值相同,a is bTrue

需要注意的是,整数大了也不行,整数is成立的最大数在我的机器(ubuntu 64bit)上是256,257的时候就是False


quietin
761 声望44 粉丝

兴趣在程序语言, 高性能, 分布式等方面