python中的is
解析 Python 对象标识与 is 运算符,并说明不可变对象可能共享标识的实现细节。
Python中的对象包含三要素:id、type、value
其中id用来唯一标识一个对象,当我们使用is来进行判断两者是否相等时,就是使用其id值在进行比较
None is None# True
a = 1; b = 1a is b# True
a = "myX"; b = "myX";a is b# True
a = 1.8; b = 1.8a is b# False
a = 3L; b = 3La is b# False
a = 1+2j; b = 1+2ja 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# Falsehttps://gist.github.com/quietin/6ce45f460c31f6212f8d
python中一切都是对象,其中字符串和整数都是不可变对象,字符串存储在字符串对象池中,整数则存储在整数对象池。
如上代码所示,a和b均会指向“myX”所占的内存空间,所以其id值相同,a is b为True点击预览
需要注意的是,整数大了也不行,整数is成立的最大数在我的机器(ubuntu 64bit)上是256,257的时候就是False