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中的strftime()方法的使用
May 22 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
Jan 28 Python
Python正则表达式常用函数总结
Jun 24 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
Python3 log10()函数简单用法
Feb 19 Python
常用python爬虫库介绍与简要说明
Jan 25 Python
Python用类实现扑克牌发牌的示例代码
Jun 01 Python
Python内置函数及功能简介汇总
Oct 13 Python
Django websocket原理及功能实现代码
Nov 14 Python
Python爬虫如何破解JS加密的Cookie
Nov 19 Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 Python
pytorch 实现变分自动编码器的操作
May 24 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通过session id 实现session共享和登录验证的代码
2012/06/03 PHP
PHP SOCKET编程详解
2015/05/22 PHP
Yii rules常用规则示例
2016/03/15 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
JavaScript延迟加载
2021/03/09 Javascript
JS array 数组详解
2009/03/22 Javascript
Jquery.Form 异步提交表单的简单实例
2014/03/03 Javascript
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
JS实现网页上随滚动条滚动的层效果代码
2015/11/04 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
JS操作xml对象转换为Json对象示例
2017/03/25 Javascript
JavaScript实现的商品抢购倒计时功能示例
2017/04/17 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
2017/09/15 Javascript
详解vue中引入stylus及报错解决方法
2017/09/22 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
跟老齐学Python之开始真正编程
2014/09/12 Python
python搜索指定目录的方法
2015/04/29 Python
python和bash统计CPU利用率的方法
2015/07/10 Python
Python文件处理
2016/02/29 Python
用Python写一个无界面的2048小游戏
2016/05/24 Python
使用Python对Access读写操作
2017/03/30 Python
Flask框架Jinjia模板常用语法总结
2018/07/19 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
Perfume’s Club中文官网:西班牙美妆在线零售品牌
2020/08/24 全球购物
《祁黄羊》教学反思
2014/04/22 职场文书
高中班主任评语大全
2014/04/25 职场文书
项目安全员岗位职责
2015/02/15 职场文书
居住证明范文
2015/06/17 职场文书
使用jpa之动态插入与修改(重写save)
2021/11/23 Java/Android
奥特曼十大神器:奥特手镯在榜,第一是贝利亚的神器
2022/03/18 日漫