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入门_浅谈数据结构的4种基本类型
May 16 Python
Python实现将HTML转换成doc格式文件的方法示例
Nov 20 Python
利用Python2下载单张图片与爬取网页图片实例代码
Dec 25 Python
python 获取字符串MD5值方法
May 29 Python
python统计多维数组的行数和列数实例
Jun 23 Python
python 使用装饰器并记录log的示例代码
Jul 12 Python
django的ORM操作 增加和查询
Jul 26 Python
基于pycharm实现批量修改变量名
Jun 02 Python
python使用yaml 管理selenium元素的示例
Dec 01 Python
Python Pygame实现俄罗斯方块
Feb 19 Python
python实现自定义日志的具体方法
May 28 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 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
PHP5.3.1 不再支持ISAPI
2010/01/08 PHP
php 文件缓存函数
2011/10/08 PHP
PHP number_format() 函数定义和用法
2012/06/01 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
2014/07/01 PHP
php中解析带中文字符的url函数分享
2015/01/20 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
cnblogs csdn 代码运行框实现代码
2009/11/02 Javascript
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
基于JQuery 的消息提示框效果代码
2011/07/31 Javascript
如何判断微信内置浏览器(通过User Agent实现)
2014/09/01 Javascript
轻松掌握JavaScript享元模式
2016/08/27 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
详解JS数值Number类型
2018/02/07 Javascript
Javascript如何实现扩充基本类型
2020/08/26 Javascript
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
python 内置函数filter
2017/06/01 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
详解Python匿名函数(lambda函数)
2019/04/19 Python
python的launcher用法知识点总结
2020/08/07 Python
HTML5实现锚点时请使用id取代name
2013/09/06 HTML / CSS
输入N,打印N*N矩阵
2012/02/20 面试题
留学自荐信的技巧
2013/10/17 职场文书
高三英语教学反思
2014/01/13 职场文书
高二历史教学反思
2014/01/25 职场文书
简历上的自我评价
2014/02/03 职场文书
《逃家小兔》教学反思
2014/02/23 职场文书
创业融资计划书
2014/04/25 职场文书
党员民主评议总结
2014/10/20 职场文书
原料仓管员岗位职责
2015/04/01 职场文书