Python中的is和==比较两个对象的两种方法


Posted in Python onSeptember 06, 2017

Python中的is和==比较两个对象的两种方法

在Python中有两种方式比较两个对象是否相等,分别是is和==,两者之间是不同的

  • ==比较的是值(如同java中的equals方法)
  • is比较的是引用(可以看作比较内存地址, 类似于java中的==)

对于:

>>> n = 1
>>> n is 1
True
>>> b = '1'
>>> b is 1
False
>>> n == b
False

由于1和'1'不管在值上面还是在引用上面都不同,所以结果都为false

对于:

>>> n = 1
>>> n is 1
True

这里有一个知识点,简单来说,对于整形这种primitive type,引用比较就是值比较,然而,Python在实现整型中采用了这种方式,对于位于-5到256之间的数字,在内存中保留数组存储这些数字,下次使用时候直接引用。而在此范围外的数字,则会新建int对象

举个简单的example,如下代码所示:

#a和b的值超出256
>>> a = 257
>>> b = 257
>>> a is b
False

#a和b的值在-5和256之间
>>> a = 256
>>> b = 256
>>> a is b
True

如上例子所示,只要是在-5~256之间的整形,python不会给变量初始化新的内存空间,但是一旦超出256,则会分配新的空间。

通过打印两个对象的id也可以直接的看出两个对象内存地址的区别,如下所示:

#a和b的值超出256
>>> a = 257
>>> b = 257
>>>
>>>
>>> id(a)
140638347685960
>>> id(b)
140638347686008

#a和b的值在-5和256之间
>>> a = 256
>>> b = 256
>>> id(a)
140638347656864
>>> id(b)
140638347656864

以上就是Python is和==的对比的详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
Python中的defaultdict与__missing__()使用介绍
Feb 03 Python
简单谈谈Python的pycurl模块
Apr 07 Python
python监控进程脚本
Apr 12 Python
python中scikit-learn机器代码实例
Aug 05 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
Jan 29 Python
基于Python的PIL库学习详解
May 10 Python
简单了解python gevent 协程使用及作用
Jul 22 Python
python线程中的同步问题及解决方法
Aug 29 Python
Python查找不限层级Json数据中某个key或者value的路径方式
Feb 27 Python
python numpy矩阵信息说明,shape,size,dtype
May 22 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
Jun 18 Python
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
Apr 06 Python
Python中表示字符串的三种方法
Sep 06 #Python
通过Python实现自动填写调查问卷
Sep 06 #Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
Sep 06 #Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
Sep 05 #Python
Python基于回溯法子集树模板实现图的遍历功能示例
Sep 05 #Python
Python数据结构与算法之图结构(Graph)实例分析
Sep 05 #Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
Sep 05 #Python
You might like
火影忍者:这才是千手柱间和扉间的真正死因,角都就比较搞笑了!
2020/03/10 日漫
举例详解PHP脚本的测试方法
2015/08/05 PHP
jQueryUI如何自定义组件实现代码
2010/11/14 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
IE浏览器下PNG相关功能
2015/07/05 Javascript
用JS写的一个Ajax库(实例代码)
2016/08/06 Javascript
jQuery学习笔记之回调函数
2016/08/15 Javascript
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
JavaScript 是什么意思
2016/09/22 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
JS开发中百度地图+城市联动实现实时触发查询地址功能
2017/04/13 Javascript
js自定义input文件上传样式
2018/10/26 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
python中如何使用正则表达式的集合字符示例
2017/10/09 Python
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
Python autoescape标签用法解析
2020/01/17 Python
Django实现图片上传功能步骤解析
2020/04/22 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
HTML5+CSS3:3D展示商品信息示例
2017/01/03 HTML / CSS
皇马官方商城:Real Madrid Store
2016/09/02 全球购物
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
材料化学应届生求职信
2013/10/09 职场文书
活动策划邀请函
2014/02/06 职场文书
低碳环保演讲稿
2014/08/28 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书