点击关注我哦

学习Python之初,我们往往可以很快的理解一个概念,尽管有时候不太精确,但大部分时候不会影响我们正常编程。但有些细微的知识点别人问起来(尤其是面试官们),可能并不能很好的回答,一下就暴露了自己的...水准,所以注意细节的学习非常重要。

比如,我们可能没有深入思考过的一个问题:Python中“is”和“==”有什么区别?

从字面上看:a == b表示a等于b,a is b表示a是b,属于看起来就很容易被混淆的概念。我们先看一个示例:

>>> a = 10
>>> b = 10
>>> a == b
True
>>> a is b
True
>>> a = 1000
>>> b = 1000
>>> a == b
True
>>> a is b
False
>>> a = []
>>> b = []
>>> a == b
True
>>> a is b
False

所以,为什么a和b看起来一样,a == b一直为True,但是a is b时而True时而False???

在搞清楚这个问题之前,我们先了解一个知识点:Python中对象包含的三个基本要素:

 ·  id(身份标识)

 ·  value(值)

 ·  type(数据类型)

“is”和“==”虽然都是被用来进行对对象的比较和判断,但是比较和判断的内容却不相同。

==:比较操作符

“==”主要用来比较两个对象的value是否相等,也就是我们在上述的示例中可以“看得到”的值。我们可以很直观的看到上述实例中a和b的值相等,a == b返回的都是True。

is:同一性操作符

“is”主要用来比较两个对象的id是否相同,每个id是我们不能很直观“看得到”的值。因此在上述的实例中,a is b返回的会有False。

可是,会有小伙伴问:为什么上述示例有True也有False呢?什么时候才是True,什么时候才是False呢?我们给大家列出另一部分示例,大家通过观察a和b的id便可以很直观的看出问题。

>>> a = 10
>>> b = 10
>>> id(a)
1522824112
>>> id(b)
1522824112
>>> a = 1000
>>> b = 1000
>>> id(a)
2355964039120
>>> id(b)
2355971335120
>>> a = 'hello'
>>> b = 'hello'
>>> id(a)
2355971323136
>>> id(b)
2355971323136
>>> a = ['hello', 'china']
>>> b = ['hello', 'china']
>>> id(a)
2355971309320
>>> id(b)
2355971309384

综上,“==”主要用来比较两个对象的value是否相等;“is”主要用来比较两个对象的id是否相同;并且Python为了优化速度,使用了小整数[-5, 257)对象池,以避免为整数频繁申请和销毁内存空间;类似的,Python对字符串对象也有一个类似的缓冲池,因此只有以上两种情况时,a is b才会返回True,其他时候a is b均为False。

今天的分享就到这里,大家还有什么Python问题,后台给我留言哦~

·  END  ·

RECOMMEND

推荐阅读

1. 效率提升的软件大礼包

2. 那么多可选编程语言,Why Python?

3. 学习Python,你选对书了吗?

90%初学者会混淆的Python概念相关推荐

  1. python学习:最适合初学者的8本Python书籍

    Python是最友好的编程语言之一,也因此成为初学者的首选,为了帮助你更好更快的上手Python,并学会使用Python进行编程,本文我们为初学者分享了最好的Python书籍.希望能够对你有所帮助: ...

  2. 初学者先学python语音好吗_献给Python初学者 零基础学习Python能学会吗

    献给Python初学者 零基础学习Python能学会吗 时间:2018-01-08     来源:零基础学习Python方法讲解 零基础学习Python能学会吗?这个问题几乎是所有初学Python的小 ...

  3. 自动化打包资源混淆集成python实践----资源混淆

    前面自动化打包资源混淆集成python实践----打包一文讲述了四种打包方案,以及美团打包方案.apk注释添加渠道号方案的实现.这里讲集成资源混淆. 1.资源混淆带来的好处: 1)对资源文件起一定的保 ...

  4. 初学者必知的Python中优雅的用法

    初学者必知的Python中优雅的用法:http://python.jobbole.com/81393/

  5. 七个初学者必下载的Python编程器

    我可以负责任地告诉大家,Python绝对算是当前很受欢迎的编程语言之一.开源的编程语言,可用于Web编程.数据科学.人工智能等等应用,开发者更专注于解决问题,而不是语法,各式各样的工具也让Python ...

  6. python开发环境和运行环境的区别_Python 初学者必知:Python 运行与开发环境

    http://codingdao.com/wp/post/py-must-know-run-dev-env/ Python 初学者必知:Python 运行与开发环境 2011年2月11日 Breake ...

  7. 新手先学python还是c语言,初学者应该选择学习Python还是C语言

    小编给大家分享一下初学者应该选择学习Python还是C语言,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧! 有人觉得应该从C语言开始入门,原因如下: 1.C语言是你上大学第一门接触的编程语 ...

  8. 初学者入门课,Python入门体验之九九乘法表

    初学者入门课,Python入门体验之九九乘法表 在我们新学习一门语言的时候,我们入门的第一个程序一定是HelloWorld,当学了这个的时候,接下来进阶的就是九九乘法表,这个对于已经学过的或者思维比较 ...

  9. 总结了90条简单实用的Python编程技巧

    点击上方"菜鸟学Python",选择"星标"公众号 超级无敌干货,第一时间送达!!! 来源:萝卜大杂烩 编码原则 建议1:理解 Pythonic 概念--详见 ...

最新文章

  1. 方法总比困难多_只是为了生活
  2. Struts2中的拦截器与过滤器学习
  3. JDBC——入门知识【转】
  4. FFMPEG结构体分析
  5. Eclipse下搭建C语言开发环境
  6. 前端学习(1855)vue之电商管理系统电商系统之安装mysql出现VCRUNTIME140_1.dll
  7. 【JAVA基础篇】集合框架
  8. SSH连接Linux CentOS7-Putty篇
  9. Chrome/360极速/猎豹/枫树/浏览器去除视频网站广告利器插件——【切糕】广告视频屏蔽专家下载...
  10. Android 使用WakeLock
  11. 计算机键盘上范的怎么点击,微信怎么用键盘最小化 电脑最小化键盘怎么按
  12. esp32触摸touch功能使用过程详述arduino
  13. arcgis api 4.X 比例尺的添加
  14. Audio Hijack教程:轻松捕获iOS设备中的音频
  15. Goolge Chrome 浏览器下载不了文件的解决办法
  16. 本地BLAST的使用方法及基本操作步骤
  17. 对于大数据的一些处理方法
  18. SSO单点登录系统设计,数据库设计文档
  19. 原生JS实现躲避粒子小游戏
  20. php电视直播cms系统_在线网络电视直播内核完整PHP版 v3.0

热门文章

  1. 武汉计算机学校排名及分数线,湖北省专科学校排名及分数线2019
  2. TVS管原理、特性和选型及失效简析
  3. ftp用指定的用户名和密码无法登录到该ftp服务器解决方法
  4. 几个html页面怎么连接,如何使用flas连接我的两个HTML页面
  5. MFC Windows 程序设计[195]之最大最小化串连格子(附源码)
  6. android-更新版本签名异常解决方案
  7. Sql declare申明变量
  8. 影像处理第一篇之影像旋转(软件插件篇)
  9. android多国语言翻译包命名,android多国语言翻译工具,一键生成28国家翻译6666翻车了...
  10. 中国区域创新能力及5项一级指标效用值(2001-2020年)