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 06 Python
python正则分析nginx的访问日志
Jan 17 Python
终端命令查看TensorFlow版本号及路径的方法
Jun 13 Python
Python列表推导式与生成器用法分析
Aug 02 Python
python将txt文件读入为np.array的方法
Oct 30 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
Dec 04 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
Aug 28 Python
python动态文本进度条的实例代码
Jan 22 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
Feb 07 Python
Python 之 Json序列化嵌套类方式
Feb 27 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
Apr 13 Python
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
Jun 29 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 身份验证方面的函数
2009/10/11 PHP
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
php中 $$str 中 "$$" 的详解
2015/07/06 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
javascript实现不同颜色Tab标签切换效果
2016/04/27 Javascript
JS Attribute属性操作详解
2016/05/19 Javascript
Vue实现6位数密码效果
2018/08/18 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
2019/03/28 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
2021/03/01 jQuery
Python实现批量读取word中表格信息的方法
2015/07/30 Python
python多线程扫描端口(线程池)
2019/09/04 Python
python模块导入的方法
2019/10/24 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
2020/01/21 Python
python内打印变量之%和f的实例
2020/02/19 Python
python pyqtgraph 保存图片到本地的实例
2020/03/14 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
2021/01/05 Python
关于HTML5的22个初级技巧(图文教程)
2012/06/21 HTML / CSS
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
eBay比利时购物网站:eBay.be
2019/08/09 全球购物
英国行业制服供应商:Alexandra
2019/09/14 全球购物
Linux的主要特性
2016/09/03 面试题
初中数学教学反思
2014/01/16 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
2014年小学重阳节活动策划方案
2014/09/16 职场文书
学生上课看漫画的检讨书
2014/09/26 职场文书
财务部岗位职责
2015/02/03 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
php+laravel 扫码二维码签到功能
2021/05/15 PHP
详解Spring事件发布与监听机制
2021/06/30 Java/Android
Python 处理表格进行成绩排序的操作代码
2021/07/26 Python
SQL Server中常用截取字符串函数介绍
2022/03/16 SQL Server