Python 中有个很有趣的运算符–is,其作用看似和==是一样的,但实际上并非如此。

通过一个示例来看一下两者的去区别:

>>> a = b = [1,2,3]
>>> c = [1,2,3]
>>> a == b
True
>>> a == c
True
>>> a is b
True
>>> a is c
False

前几个示例没啥问题,但是最后一个a is c 返回 False,为什么会这样呢?因为 is 检查的是两个对象是否相同,而不是相等,变量 x 和 y 指向同一个列表,而c 指向另一个列表,虽然两个的值都是一样,但是并不是同一个对象,所以这里 a is c 返回 False

再来看个示例,可以更加说明这一点:

>>> a = [1,2,3]
>>> b = [2,1]
>>> a is not b
True
>>> del a[2]
>>> a
[1, 2]
>>> b.reverse()
>>> b
[1, 2]
>>> a==b
True
>>> a is b
False

从上例可以看到,a 和 b 一开始就不是同一个列表值,所以 a is not b自然返回的是 False,经过调整将a 和 b 的值修改成一样,这时候 a==b返回 True,而 a is b 依然返回False。
很显然这两个列表相等,但并不相同。
总之,==是用来检查两个对象是否相等,而 is 用来检查两个对象是否相同。

注意:不要将 is 用于数字或字符串这种不可变的基本值。鉴于 Python内部处理这些对象的方式,这种做法的接口将会不可预测。

本书知识点来源于《Python 基础教程》第三版。

Python中运算符 is 和 == 的区别相关推荐

  1. python中raise和raise e区别_python raise和assert的区别

    python中raise和assert的区别 一.使用raise抛出异常 python可以自动触发异常,raise(内置函数)的定义为显示的抛出异常,用户可以使用raise进行判断,显式的引发异常,r ...

  2. python中break和continue的区别

    python中break和continue的区别 break 结束for 或者while 循环  后面还没循环到的 不再循环 continue 当满足某种条件时结束当前值的循环 后面没有循环的继续循环 ...

  3. python中bytearray和java中byte[]的区别_Python经典面试题:说说Python中xrange和range的区别?...

    昨晚一小伙后台问xrange和range有啥区别,讲了下他倒领悟的挺快,其实这也是你各面试Python岗位,经常会遇到的Python面试题,长个心眼哈,说不定明年3月你找工作就用上了. 废话不多说,开 ...

  4. python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法

    python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录

  5. python有关迭代器和生成器的面试题_【面试题 | Python中迭代器和生成器的区别?】- 环球网校...

    [摘要]今天给大家解答一道Python常见的面试题,希望这个面试栏目,给那些准备面试的同学,提供一点点帮助!小编会从最基础的面试题开始,每天一题.如果参考答案不够好,或者有错误的话,麻烦大家可以在留言 ...

  6. python中函数和方法的区别

    本篇内容主要介绍从几个维度来介绍下python中函数和方法的区别: 首先,从分类的角度来分析. (1)函数的分类: 内置函数:python内嵌的一些函数. 匿名函数:一行代码实现一个函数功能. 递归函 ...

  7. Python 中各种imread函数的区别与联系

    Python 中各种imread函数的区别与联系 最近一直在用python做图像处理相关的东西,被各种imread函数搞得很头疼,因此今天决定将这些imread总结一下,以免以后因此犯些愚蠢的错误.如 ...

  8. Python中深拷贝与浅拷贝的区别?

    往期面试题: 列举Python中的标准异常类? 说说Python面向对象三大特性? 说说Python中有几种数据类型? 说说Python模块主要分哪三类? 废话不多说,开始今天的题目: 问:说说Pyt ...

  9. 【Python面试】 说说Python中xrange和range的区别?

    往期面试题: 谈谈对 Python 和其他语言的区别? 说说4种常用编码的区别? 说说Python面向对象三大特性? 说说Python中有几种数据类型? 废话不多说,开始今天的题目: 问:说说Pyth ...

最新文章

  1. python升级或者其他原因把yum搞坏了
  2. 自然语言12_Tokenizing Words and Sentences with NLTK
  3. 拟合一条曲线_数据预测与曲线拟合
  4. 阿里巴巴:全链路压测体系建设方案的思考与实践
  5. cURL在Web渗透测试中的应用
  6. 系统测试:单元测试相关知识笔记
  7. linux mysql odbc驱动安装_MySQL ODBC 驱动安装
  8. EmptyPage(空白页组件)原理与使用
  9. 基于iOS 10、realm封装的下载器
  10. 深入浅出计算机组成原理01:计算机概要与技术
  11. C# interview questions--- 国外大公司c#技术面试必看(总结贴一)
  12. 人工智能数学基础之高等数学
  13. Jmeter(三十八)while控制器实现ssh三次重连
  14. 计算机维修5级,什么是计算机硬件的一级维修二级维修三级维修
  15. 数据分析法、数据分析方法论总结
  16. 信息系统项目管理师自学笔记(二十二)—— 网络应用与管理
  17. ARM ADS中的AXD 调试经验集锦
  18. 如何优雅地重启go程序--endless篇
  19. 百度地图、高德地图的数据下载
  20. Android 在build.gradle文件中读取json文件

热门文章

  1. 用代码,打造创意新世界!【Innovation 2021】网易应用创新开发者大赛正式开赛!
  2. github加速-解决GitHub访问速度很慢的问题
  3. 使用Python将Excel中的数据导入到MySQL
  4. Vue第二章,在项目中使用element-ui组件
  5. 一比特控制所有:通过一比特绕过Windows 10保护
  6. fail2ban安全设置
  7. Javaweb中利用kaptcha生成验证码
  8. 《UML用户指南第二版》再次温读笔记(一)(downmoon)
  9. ORACLE表空间的相关操作
  10. linux主机操作性日志恢复测试,Linux主机操作系统加固规范标准[详].doc