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回调函数的使用方法
Jan 23 Python
Go语言基于Socket编写服务器端与客户端通信的实例
Feb 19 Python
Python+matplotlib实现填充螺旋实例
Jan 15 Python
Python爬虫实战:分析《战狼2》豆瓣影评
Mar 26 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
Dec 17 Python
python如何获取当前文件夹下所有文件名详解
Jan 25 Python
python时间序列按频率生成日期的方法
May 14 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
Mar 09 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
Apr 02 Python
Python selenium使用autoIT上传附件过程详解
May 26 Python
解决Keras自带数据集与预训练model下载太慢问题
Jun 12 Python
python 实现的车牌识别项目
Jan 25 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
PHP编程之高级技巧——利用Mysql函数
2006/10/09 PHP
IP138 IP地址查询小偷实现代码
2010/02/15 PHP
php摘要生成函数(无乱码)
2012/02/04 PHP
PHP文件操作简单介绍及函数汇总
2020/12/11 PHP
javascript对象之内置对象Math使用方法
2010/04/16 Javascript
javascript写的异步加载js文件函数(支持数组传参)
2014/06/07 Javascript
从数据库读取数据后将其输出成html标签的三种方法
2014/10/13 Javascript
JavaScript动态改变div属性的实现方法
2015/07/22 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
2016/05/28 Javascript
JS实现类似百叶窗下拉菜单效果
2016/12/30 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
从零学习node.js之mysql数据库的操作(五)
2017/02/24 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
详解Require.js与Sea.js的区别
2018/08/05 Javascript
jQuery实现的页面弹幕效果【测试可用】
2018/08/17 jQuery
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
Vue 实例事件简单示例
2019/09/19 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
2019/11/12 Javascript
原生JS与CSS实现软件卸载对话框功能
2019/12/05 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
Python strip lstrip rstrip使用方法
2008/09/06 Python
Python实现批量读取word中表格信息的方法
2015/07/30 Python
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
TensorFlow实现Batch Normalization
2018/03/08 Python
python3 简单实现组合设计模式
2020/07/02 Python
德国汉莎航空中国官网: Lufthansa中国
2017/03/30 全球购物
亚马逊中国官方网站:amazon.cn
2017/05/25 全球购物
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
电气个人求职信范文
2014/02/04 职场文书
经济贸易系求职信
2014/08/04 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
2015年暑期社会实践方案
2015/07/14 职场文书
详解vue中v-for的key唯一性
2021/05/15 Vue.js
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
2021/06/09 Python