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实现爬虫下载美女图片
Jul 14 Python
scrapy spider的几种爬取方式实例代码
Jan 25 Python
python实现批量解析邮件并下载附件
Jun 19 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
Mar 20 Python
详解Django 时间与时区设置问题
Jul 23 Python
Python 装饰器原理、定义与用法详解
Dec 07 Python
python已协程方式处理任务实现过程
Dec 27 Python
python 成功引入包但无法正常调用的解决
Mar 09 Python
详解Django配置JWT认证方式
May 09 Python
Python中无限循环需要什么条件
May 27 Python
Python+Appium实现自动抢微信红包
May 21 Python
Python尝试实现蒙特卡罗模拟期权定价
Apr 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
也谈php网站在线人数统计
2008/04/09 PHP
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
深入解析PHP的引用计数机制
2013/06/14 PHP
php结合md5实现的加密解密方法
2016/01/25 PHP
php 判断字符串编码是utf-8 或gb2312实例
2016/11/01 PHP
PHP强制转化的形式整理
2020/05/22 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
checkbox 多选框 联动实现代码
2008/10/22 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
2012/12/10 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
2016/08/05 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
基于Angular.js实现的触摸滑动动画实例代码
2017/02/19 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
10 种最常见的 Javascript 错误(频率最高)
2018/02/08 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
python清除字符串里非数字字符的方法
2015/07/02 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
2018/06/11 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
详解Python 最短匹配模式
2020/07/29 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
Python项目打包成二进制的方法
2020/12/30 Python
巴西购物网站:Onofre Agora
2020/06/08 全球购物
机电专业个人自荐信格式模板
2013/09/23 职场文书
学校政风行风自查自纠报告
2014/10/21 职场文书
怎样写离婚协议书
2015/01/26 职场文书
2015年支教教师工作总结
2015/07/22 职场文书
护士工作心得体会
2016/01/25 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
golang 在windows中设置环境变量的操作
2021/04/29 Golang
2022微信温控新功能上线
2022/05/09 数码科技
Android开发EditText禁止输入监听及InputFilter字符过滤
2022/06/10 Java/Android