Python有两个用于相等比较的运算符,“is”和“==”(等于)。在这篇文章中,我将带你们了解Python中“is”和“==”的区别,并通过几个简单地例子说明应该在什么时候使用它们,我们先来看一个情景:

当我还是一个孩子的时候,我们的邻居家有两只双胞胎猫。

这两只猫看起来看起来完全一样 - 同样的木炭毛,同样敏锐的绿眼睛。撇开一些个性怪癖,单从它们的外表根本无法区分它们。但他们确确实实是两只不同的猫,两个不同的生物,尽管它们看起来完全一样。

就如相等和相同在意思上是有差异的,理解这种差异对理解Python中的操作符“is”和“==”是很重要的。

“==”更侧重于检测相等:如果这些猫是Python对象,我们用“==”比较它们,我们会得到“两只猫是相等的”。

“is”侧重于比较相同:如果我们用“is”比较它们,我们会得到“这是两只不同的猫”。

在我把所有的东西都用猫作为类比之前,让我们来看看一些真正的Python代码。

首先,我们将创建一个新的列表对象并将其命名为a,然后定义另一个变量b指向同一列表的对象:

SHAPE \* MERGEFORMAT

我们来看看这两个变量,我们可以看到它们指向相同的列表。

SHAPE \* MERGEFORMAT

因为两个列表对象看起来相同,所以当我们使用“==”运算符比较它们的相等性时,我们会得到预期的结果:

SHAPE \* MERGEFORMAT

然而,这并没有告诉我们a和b是否真的指向同一个对象。当然,我们知道它们是指向同一个对象的,因为我们之前给它们分配了相同的对象,但是假设我们不知道我们会发现什么?

那么将两个变量用“is”操作符进行比较,这会证明两个变量是指向同一个列表对象的:

SHAPE \* MERGEFORMAT

我们来看看当我们创建列表对象的相同副本时会发生什么,我们可以通过在现有列表上调用list()来创建一个名为c的副本:

SHAPE \* MERGEFORMAT

您将再次看到我们刚刚创建的新列表看起来与a和b指向的list对象相同:

SHAPE \* MERGEFORMAT

这就是有趣的地方,如果我们使用“==”运算符来比较列表副本c和初始化列表a,您希望看到什么答案?

SHAPE \* MERGEFORMAT

好吧,我希望这是您所期待的,这个结果告诉我们c和a有相同的内容,它们被Python认为是相等的,但它们是否指向同一个对象?我们来看看is操作符:

SHAPE \* MERGEFORMAT

以上我们得到了不同的结果。Python告诉我们,c和a指向两个不同的对象,尽管它们的内容是相同的。

所以,回顾一下,我们区分“is”和“==”用以下两个简短的定义:

如果两个变量指向同一个(相同的)对象,则“is”表达式为True。

如果变量所引用的对象是相等的(有相同的内容),则“==”表达式的值为True。

只要记住这个,当您需要在Python中使用is和==的时候,就会想到一对孪生的猫(狗也一样),您就会知道该用哪个了。

python两个等于号是代表什么_Python中is与双等于号“==”的区别相关推荐

  1. python中一个等于号和两个等于号_Python中is与双等于号“==”的区别

    Python有两个用于相等比较的运算符,"is"和"=="(等于).在这篇文章中,我将带你们了解Python中"is"和"==&q ...

  2. python中一个等于号和两个等于号_python中is与双等于号“==”的区别示例详解

    前言 在开始本文之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识).python type()(数据类型)和value(值).is和==都是对对象进行比较判断作用的,但对对 ...

  3. python中等于号可以用is代替_python中is与双等于号“==”的区别示例详解

    前言 在开始本文之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识).python type()(数据类型)和value(值).is和==都是对对象进行比较判断作用的,但对对 ...

  4. python两个等于号是代表什么_python两个等于号是什么意思_等于号表示什么意思...

    python中两个等于号是什么意思 0 喜欢 0 不喜欢 python中两个等于号是什么意思 python 最新提问 3月 20, 下面这篇文章主要给大家介绍了关于python中is与双等于号&quo ...

  5. python代码风格程序越复杂越高级_Python中代码风格的改变和相应的性能优化

    使用现代风格改善你的代码 一旦你开始使用 Python 3,你就有机会接触新的特性来改善你的代码.这篇文章中提到的很多东西实际上在 Python 3 之前就已经被支持了.但我还是要提一下它们,因为知道 ...

  6. python新式类和经典类区别_Python中新式类和经典类的区别,钻石继承

    1)首先,写法不一样: class A: pass class B(object): 2)在多继承中,新式类采用广度优先搜索,而旧式类是采用深度优先搜索. 3)新式类更符合OOP编程思想,统一了pyt ...

  7. python空字符串意义_Python中的None与空字符串”的区别

    1.首先要了解Pythond的对象的概念: Python中,万物皆对象,所有的操作都是针对对象的,那什么是对象,5是一个int对象,'oblong'是一个str对象,异常也是一个对象,抽象一点是,人, ...

  8. python中randint是什么意思_python中random.randint和random.randrange的区别详解

    在python中,通过导入random库,就能使用randint 和 randrange 这两个方法来产生随机整数.那这两个方法的区别在于什么地方呢?让我们一起来看看! 区别: randint 产生的 ...

  9. python中常见的双下方法_python中常见的双下方法_python面向对象(5)__特殊双下方法...

    双下方法 双下方法是开发python这个语言程序员用的,源码中使用的. 我们不能轻易使用双下方法.可能重新写object的源码,慎用!!! 双下方法特征:你不知道干啥了,就会触发某个双下方法 len ...

最新文章

  1. 如何判断 cxgrid 双击了哪一列_唐卡的价值主要体现在哪 如何判断唐卡的价值
  2. 【ASP.NET 问题】Win7中IIS被防火墙阻止导致外网无法访问的解决方法。
  3. linux下svn客户端安装及环境配置
  4. wpf Combobox 样式的问题
  5. javap的用途不断发展:您的Java类文件中隐藏了什么?
  6. gitlab或者gitee生成/添加SSH公钥的解决办法
  7. 一些弹出框的用法例子(二)
  8. 最小生成树(hdu1233还是畅通工程)
  9. oc语言学习之基础知识点介绍(三):类方法、封装以及继承的介绍
  10. 鸿蒙系统30个G,鸿蒙系统升级,为何固定大小有5.9G,也有3点几G呢?
  11. python人工智能小程序_推荐几款“真”人工智能技术小程序
  12. 啃老 万岁_Windows 7已死,您的杀毒软件万岁
  13. 现代通信技术之交换技术基础
  14. linux给用户user1设置密码,Linux用户管理之useradd、passwd命令讲解
  15. 利用Python制作本地Excel的查询与生成的程序
  16. 均值、方差、标准差、协方差详解及MATLAB实现
  17. adb连接手机工具_adb命令——连接手机
  18. 怎样使用计算机上的高级共享设置密码,怎么设置电脑共享密码
  19. 男人就撑100秒flash游戏制作教程
  20. HDU 4379 - The More The Better

热门文章

  1. Windows系统启动MongoDB本地可以访问,远程连接不上问题
  2. [Android]第一个Android软件/demo
  3. VMware软件虚拟机不能全屏的问题
  4. [hdu4343]interval query
  5. 上计算机课玩游戏检讨400字,上课说话检讨书400字(精选10篇)
  6. 【线上峰会】如何一天掌握物联网全栈开发之道
  7. 嵌入式系统-硬件工程师
  8. javaweb JAVA JSP停车场管理系统源码JSP停车收费系统JSP停车场管理 JSP停车场收费系统
  9. 双代号网络图、双代号时标网络图、单代号网络图精讲
  10. 梦想CAD控件(网页CAD插件) 2022.12.12更新