python中 is 与 == 的区别
程序员文章站
2022-03-08 20:10:10
is 是完全相同,值以及内存位置一摸一样 ==是值相同,内存位置不一样 >>> a=[11,22,33]>>> b=[11,22,33]>>> id(a)100711200>>> id(b)100667960>>> a==bTrue>>> a is bFalse except : >>> a=1>> ......
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位