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 除法小技巧
Sep 06 Python
Python实现获取网站PR及百度权重
Jan 21 Python
详解Python发送邮件实例
Jan 10 Python
使用python读取csv文件快速插入数据库的实例
Jun 21 Python
简单了解python gevent 协程使用及作用
Jul 22 Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 Python
通过python扫描二维码/条形码并打印数据
Nov 14 Python
Python Django view 两种return的实现方式
Mar 16 Python
django的autoreload机制实现
Jun 03 Python
基于Keras中Conv1D和Conv2D的区别说明
Jun 19 Python
python 绘制场景热力图的示例
Sep 23 Python
python接口自动化框架实战
Dec 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
资料注册后发信小技巧
2006/10/09 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
PHP中文乱码解决方案
2015/03/05 PHP
php使用Imagick生成图片的方法
2015/07/31 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
thinkPHP框架实现生成条形码的方法示例
2018/06/06 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
jquery 学习之二 属性相关
2010/11/23 Javascript
深入理解JavaScript系列(16) 闭包(Closures)
2012/04/12 Javascript
jquery实现div阴影效果示例代码
2013/09/16 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
jquery实现标签上移、下移、置顶
2015/04/26 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
jQuery实现键盘回车搜索功能
2017/07/25 jQuery
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
js实现打字小游戏
2019/12/17 Javascript
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
python实现简单ftp客户端的方法
2015/06/28 Python
Django实现的自定义访问日志模块示例
2017/06/23 Python
python和opencv实现抠图
2018/07/18 Python
使用Python将Mysql的查询数据导出到文件的方法
2019/02/25 Python
python基于itchat模块实现微信防撤回
2019/04/29 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
lululemon美国官网:瑜伽服+跑步装备
2018/11/16 全球购物
Street One瑞士:德国现代时装公司
2019/10/09 全球购物
应届行政管理专业个人自我评价
2013/12/28 职场文书
学术会议欢迎词
2014/01/09 职场文书
投资合作协议书范本
2014/04/17 职场文书
公务员爱岗敬业演讲稿
2014/08/26 职场文书
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL