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 ldap实现登录实例代码
Sep 30 Python
Python网络编程使用select实现socket全双工异步通信功能示例
Apr 09 Python
Python实现购物车购物小程序
Apr 18 Python
Python实现的连接mssql数据库操作示例
Aug 17 Python
更新修改后的Python模块方法
Mar 03 Python
django创建最简单HTML页面跳转方法
Aug 16 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
Flask中endpoint的理解(小结)
Dec 11 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
python中count函数简单的实例讲解
Feb 06 Python
Python中BeautifulSoup通过查找Id获取元素信息
Dec 07 Python
windows安装python超详细图文教程
May 21 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
漫威DC即将合作联动,而双方早已经秘密开始
2020/04/09 欧美动漫
深入array multisort排序原理的详解
2013/06/18 PHP
php获取表单中多个同名input元素的值
2014/03/20 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
2014/04/17 PHP
我见过最全的个人js加解密功能页面
2007/12/12 Javascript
复制本贴标题和地址的js代码
2008/07/01 Javascript
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
Ajax 数据请求的简单分析
2011/04/05 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
jQuery ready()和onload的加载耗时分析
2016/09/08 Javascript
Vue.js计算属性computed与watch(5)
2016/12/09 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
简单实现jQuery上传图片显示预览功能
2020/06/29 jQuery
解析Angular 2+ 样式绑定方式
2018/01/15 Javascript
详解vue中移动端自适应方案
2019/05/05 Javascript
微信小程序实现图片选择并预览功能
2019/07/25 Javascript
layui原生表单验证的实例
2019/09/09 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
python利用selenium进行浏览器爬虫
2019/04/25 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
Python3爬虫关于识别检验滑动验证码的实例
2020/07/30 Python
C#可否对内存进行直接的操作
2015/02/26 面试题
幼师自荐信范文
2013/10/06 职场文书
中学生在校期间的自我评价分享
2013/11/13 职场文书
财务简历的自我评价
2014/03/05 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
社区服务活动小结
2014/07/08 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python