python中 is 与 == 的区别

is 是完全相同,值以及内存位置一摸一样

==是值相同,内存位置不一样

>>> a=[11,22,33]
>>> b=[11,22,33]
>>> id(a)
100711200
>>> id(b)
100667960
>>> a==b
True
>>> a is b
False

except : 

 

>>> a=1
>>> b=1
>>> id(a)
1605227568
>>> id(b)
1605227568
>>> a==b
True
>>> a is b
True

为什么呢?这是为了高效率使用内存,Python3的解释器中实现了小数字和字符串缓存的机制,小数字的缓冲范围是[-5 ~ 256],字符串的缓存位数默认是20位

 

posted @ 2018-06-20 20:45  Pwsun  阅读(176)  评论(0编辑  收藏  举报