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之不要红头文件(2)
Sep 28 Python
python获取Linux下文件版本信息、公司名和产品名的方法
Oct 05 Python
Python利用ElementTree模块处理XML的方法详解
Aug 31 Python
Python采集代理ip并判断是否可用和定时更新的方法
May 07 Python
python实现停车管理系统
Nov 30 Python
pytorch使用Variable实现线性回归
May 21 Python
Python爬虫 urllib2的使用方法详解
Sep 23 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
Windows上安装tensorflow  详细教程(图文详解)
Feb 04 Python
python实现简单坦克大战
Mar 27 Python
利用Python实现斐波那契数列的方法实例
Jul 26 Python
基于python定位棋子位置及识别棋子颜色
Jul 26 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生成随机颜色的方法
2014/11/13 PHP
PHP操作文件的一些基本函数使用示例
2014/11/18 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
2017/12/14 PHP
PHP中16个高危函数整理
2019/09/19 PHP
JS 去前后空格大全(IE9亲测)
2013/07/15 Javascript
IE、FF、Chrome浏览器中的JS差异介绍
2013/08/13 Javascript
JQuery给元素绑定click事件多次执行的解决方法
2014/05/29 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
2014/08/20 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
javascript实现Table排序的方法
2015/05/15 Javascript
整理一些最近经常遇到的前端面试题
2017/04/25 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
layui radio性别单选框赋值方法
2018/08/15 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
2018/10/01 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
2019/08/16 Javascript
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
Python中方法链的使用方法
2016/02/23 Python
使用Python进行二进制文件读写的简单方法(推荐)
2016/09/12 Python
Python Paramiko模块的安装与使用详解
2016/11/18 Python
Python人脸识别初探
2017/12/21 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
Python datetime 如何处理时区信息
2020/09/02 Python
SQL Server数据库笔试题和答案
2016/02/04 面试题
婚礼主持词开场白
2014/03/13 职场文书
简易离婚协议书(范本)
2014/10/25 职场文书
英语辞职信怎么写
2015/02/28 职场文书
小学思想品德教学反思
2016/02/24 职场文书
基于Redis位图实现用户签到功能
2021/05/08 Redis
Python matplotlib可视化之绘制韦恩图
2022/02/24 Python
python模板入门教程之flask Jinja
2022/04/11 Python