首页 > 编程语言 > 详细

Python3中is与==的区别#Python学习02#

时间:2020-03-28 22:08:51      阅读:78      评论:0      收藏:0      [点我收藏+]

一、区别

1.is用于判断两个变量引用的对象是否为同一个对象,通俗说是比较对象的地址。

2.==用于判断两个变量引用对象的值是否相等,默认调用对象的__eq__ ()方法。

 

二、详细说明

python中,一切皆对象。每个对象由三部分组成,即标识(identity)、类型(type)和值(value)。

a、b均赋值1000,使用==是判断a与b的值是否相等,相等为True;使用is是判断a与b的地址是否相等,很明显是不相等的,a的地址为64777136,b的地址为65907344。

技术分享图片

 

 

 

 

 

 

 

三、整数缓存问题

Python 仅对较小的整数对象进行缓存,在命令行中执行时,将在范围为[-5, 256]内的整数对象缓存起来,而不是所有整数对象;而在Pycharm 或者将其保存为文件执行时,Python将在范围为[-5,任意正整数]内的整数对象缓存起来了。

1.在命令行中,c、d均赋值66,在[-5, 256]范围内,此时c与d的地址是一样的。

技术分享图片

 

2.在文件中运行时,a与b在范围外,没有暂时缓存,而c与d,e与f均暂时缓存了,地址一样。

技术分享图片

 

四、总结

1.is 比较两个对象的id 是否相等,是否指向同一个内存地址;
2.== 比较的是两个对象的内容是否相等,值是否相等;
3.小整数对象[-5,256]在全局解释器范围内被放入缓存供重复使用;
4.is 运算符比 == 效率高,在变量和None 进行比较时,应该使用is。

 

Python3中is与==的区别#Python学习02#

原文:https://www.cnblogs.com/cxyxm/p/12589674.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!