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中查找excel某一列的重复数据 剔除之后打印
Feb 10 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
Dec 11 Python
python爬取个性签名的方法
Jun 17 Python
python 以16进制打印输出的方法
Jul 09 Python
利用Python进行数据可视化常见的9种方法!超实用!
Jul 11 Python
python pygame实现五子棋小游戏
Oct 26 Python
在python image 中安装中文字体的实现方法
Aug 22 Python
pandas 缺失值与空值处理的实现方法
Oct 12 Python
手把手教你安装Windows版本的Tensorflow
Mar 26 Python
python 判断一组数据是否符合正态分布
Sep 23 Python
Python基于百度API识别并提取图片中文字
Jun 27 Python
使用scrapy实现增量式爬取方式
Jun 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
中国的第一台收音机
2021/03/01 无线电
超级简单的发送邮件程序
2006/10/09 PHP
PHP 开源AJAX框架14种
2009/08/24 PHP
PHP5中使用DOM控制XML实现代码
2010/05/07 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
传智播客学习之java 反射
2009/11/22 Javascript
js事件(Event)知识整理
2012/10/11 Javascript
异步动态加载JS并运行(示例代码)
2013/12/13 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
ThinkJS中如何使用MongoDB的CURD操作
2016/12/13 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
微信小程序基于本地缓存实现点赞功能的方法
2017/12/18 Javascript
Vue使用json-server进行后端数据模拟功能
2018/04/17 Javascript
妙用缓存调用链实现JS方法的重载
2018/04/30 Javascript
微信小程序rich-text富文本用法实例分析
2019/05/20 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
JavaScript find()方法及返回数据实例
2020/04/30 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
2020/02/15 Python
python中sympy库求常微分方程的用法
2020/04/28 Python
Python2手动安装更新pip过程实例解析
2020/07/16 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
加拿大便宜的隐形眼镜商店:Clearly
2016/09/15 全球购物
Uber Eats台湾:寻找附近提供送餐服务的餐厅
2018/05/07 全球购物
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
如何设置Java的运行环境
2013/04/05 面试题
《四季》教学反思
2014/04/08 职场文书
安全检查汇报材料
2014/12/26 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
Python绘制散乱的点构成的图的方法
2022/04/21 Python