码迷,mamicode.com
首页 > 编程语言 > 详细

Python的“is”与“==”

时间:2016-11-22 20:02:53      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:相等   调用   比较   div   引用   false   strong   实现原理   使用   

Python比较两个对象是否相等有两种方法,简单来说,它们的区别如下:

1,is 是比较两个引用是否指向同一个对象(引用比较)

2,==是比较两个对象的值是否相等。

>>>a = [2,3,4]
>>>b = a
>>>b is a
True
>>>b = a[:] # 切片操作重新分配了对象
>>>b is a
False
>>>b == a #值是相等的
True    

实现原理
is 是比较两者是否同一个对象,比较的是内存地址(id是否相等)。

==是值比较,不可变对象,列如int,str,它会直接进行值比较。对于python已知的对象,会调用__sq__函数来比较。

对象缓存机制

Python会对比较小的对象缓存,下次用到时,回去缓存区查找,如果找到,不回再去开辟新的内存,而是继续把小对象的地址赋给新的值

1 c = 1
2 d = 1
3 print(c is d)
4 True
5 
6 1000 is 10**3
7 False
8 1000 == 10**3
9 True

通过计算得到的赋值不会使用缓存区。

 

Python的“is”与“==”

标签:相等   调用   比较   div   引用   false   strong   实现原理   使用   

原文地址:http://www.cnblogs.com/youyuan-wang/p/6090680.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!