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 27 Python
Python正则表达式使用范例分享
Dec 04 Python
详解django中自定义标签和过滤器
Jul 03 Python
python使用生成器实现可迭代对象
Mar 20 Python
对Python中内置异常层次结构详解
Oct 18 Python
对pandas中时间窗函数rolling的使用详解
Nov 28 Python
Python3模拟curl发送post请求操作示例
May 03 Python
对Django项目中的ORM映射与模糊查询的使用详解
Jul 18 Python
Python依赖包整体迁移方法详解
Aug 15 Python
win10下python3.8的PIL库安装过程
Jun 08 Python
Python爬虫之爬取某文库文档数据
Apr 21 Python
详解非极大值抑制算法之Python实现
Jun 28 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高级编程-函数-郑阿奇
2011/07/04 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
yii2 上传图片的示例代码
2018/11/02 PHP
PHP crc32()函数讲解
2019/02/14 PHP
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
js 3种归并操作的实例代码
2013/10/30 Javascript
js中同步与异步处理的方法和区别总结
2013/12/25 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
2016/05/26 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
vue mounted组件的使用
2018/06/18 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
深入理解Python3中的http.client模块
2017/03/29 Python
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
Django实现单用户登录的方法示例
2019/03/28 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
北美领先的牛仔品牌:Buffalo David Bitton
2017/05/22 全球购物
什么是接口(Interface)?
2013/02/01 面试题
总会计师岗位职责
2014/02/19 职场文书
文明礼仪伴我行演讲稿
2014/05/12 职场文书
关于环保的标语
2014/06/13 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
迎七一演讲稿
2014/09/12 职场文书
社区工作者个人总结
2015/02/28 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
python中if和elif的区别介绍
2021/11/07 Python
Python 全局空间和局部空间
2022/04/06 Python