首页 > 代码库 > Python的“is”与“==”
Python的“is”与“==”
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”与“==”
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。