Python之is与==的区别详解

Python有两个用于相等比较的运算符,“is”和“==”(等于)。在这篇文章中,我将教你们两者之间的区别,以及通过几个简单地例子说明什么时候使用它们。

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

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

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

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

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

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

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

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

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

然而,这并没有告诉我们a和b是否真的指向同一个对象。当然,我们知道它们是指向同一个对象的,因为我们之前给它们分配了相同的对象,但是假设我们不知道我们会发现什么?最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

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

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

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

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

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

以上我们得到了不同的结果。Python告诉我们,c和a指向两个不同的对象,尽管它们的内容是相同的。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

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

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

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

到此这篇关于Python之is与==的区别详解的文章就介绍到这了,更多相关Python之is与==的区别内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python中的is和==比较两个对象的两种方法

    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'

  • Python中is与==判断的区别

    在 Python 中,比较两个对象(变量)是否相等,可以用 "is" 和 "==" 操作,但它俩有什么区别?什么时候用 "is",什么时候用 "==" ?在面试时,发现不少候选人很难把这两者完全说清楚,因此在这篇文章中,「Python之禅」将对二者进行深入浅出的对比介绍. 先举个例子 小黄最近手头非常宽裕,花重金购买了一辆 P90D 特斯拉,我们暂且给这车取名叫 "小P" ,这辆车和隔壁老王家的车(车名叫

  • Python中运算符"=="和"is"的详解

    前言 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识).python type()(数据类型)和value(值).is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同.下面来看看具体区别在哪. Python中比较两个对象是否相等,一共有两种方法,简单来说,它们的区别如下: is是比较两个引用是否指向了同一个对象(引用比较). ==是比较两个对象是否相等. >>> a = [1, 2, 3] >>&g

  • Python中关键字is与==的区别简述

    本文以简单示例分析了python中关键字is与 ==的区别,供大家参考一下. 首先说明一下Python学习中几个相关的小知识点. Python中的对象包含三要素:id.type.value 其中:id用来唯一标识一个对象,type标识对象的类型,value是对象的值 is判断的是a对象是否就是b对象,是通过id来判断的 ==判断的是a对象的值是否和b对象的值相等,是通过value来判断的 具体示例如下: >>> a=100 >>> b=100.0 >>>

  • python中is与双等于号“==”的区别示例详解

    前言 在开始本文之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识).python type()(数据类型)和value(值).is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同.下面来看看具体区别在哪. 发现问题 最近在给小伙伴写段小代码用于爬取一个GIS的各高层数据,python中使用了"is"来代替"==",结果下载至512的时候出了问题. 代码如下 def get_next(x, y, z): z += 1 if

  • 基于Python __dict__与dir()的区别详解

    Python下一切皆对象,每个对象都有多个属性(attribute),Python对属性有一套统一的管理方案. __dict__与dir()的区别: dir()是一个函数,返回的是list: __dict__是一个字典,键为属性名,值为属性值: dir()用来寻找一个对象的所有属性,包括__dict__中的属性,__dict__是dir()的子集: 并不是所有对象都拥有__dict__属性.许多内建类型就没有__dict__属性,如list,此时就需要用dir()来列出对象的所有属性. __di

  • Python 列表与链表的区别详解

    目录 python 列表和链表的区别 列表的实现机制 链表 链表与列表的差异 python 列表和链表的区别 python 中的 list 并不是我们传统意义上的列表,传统列表--通常也叫作链表(linked list)是由一系列节点来实现的,其中每个节点都持有一个指向下一节点的引用. class Node: def __init__(self, value, next=None): self.value = value self.next = next 接下来,我们就可以将所有的节点构造成一个

  • Python之is与==的区别详解

    Python有两个用于相等比较的运算符,"is"和"=="(等于).在这篇文章中,我将教你们两者之间的区别,以及通过几个简单地例子说明什么时候使用它们. 当我还是一个孩子的时候,我们的邻居家有两只双胞胎猫. 这两只猫看起来看起来完全一样 - 同样的木炭毛,同样敏锐的绿眼睛.撇开一些个性怪癖,单从它们的外表根本无法区分它们.但他们确确实实是两只不同的猫,两个不同的生物,尽管它们看起来完全一样. 就如相等和相同在意思上是有差异的,理解这种差异对理解Python中的操作符

  • Python中is和==的区别详解

    Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么. 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识).type(数据类型)和value(值). is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同.下面来看看具体区别在哪. ==比较操作符和is同一性运算符区别 ==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等,例如下面两个字符串间的比较:

  • python多线程与多进程及其区别详解

    前言 个人一直觉得对学习任何知识而言,概念是相当重要的.掌握了概念和原理,细节可以留给实践去推敲.掌握的关键在于理解,通过具体的实例和实际操作来感性的体会概念和原理可以起到很好的效果.本文通过一些具体的例子简单介绍一下python的多线程和多进程,后续会写一些进程通信和线程通信的一些文章. python多线程 python中提供两个标准库thread和threading用于对线程的支持,python3中已放弃对前者的支持,后者是一种更高层次封装的线程库,接下来均以后者为例. 创建线程 pytho

  • Python中__repr__和__str__区别详解

    看下面的例子就明白了 class Test(object): def __init__(self, value='hello, world!'): self.data = value >>> t = Test() >>> t <__main__.Test at 0x7fa91c307190> >>> print t <__main__.Test object at 0x7fa91c307190> 看到了么?上面打印类对象并不是很

  • 基于python中staticmethod和classmethod的区别(详解)

    例子 class A(object): def foo(self,x): print "executing foo(%s,%s)"%(self,x) @classmethod def class_foo(cls,x): print "executing class_foo(%s,%s)"%(cls,x) @staticmethod def static_foo(x): print "executing static_foo(%s)"%x a=A(

  • python dict.get()和dict['key']的区别详解

    先看代码: In [1]: a = {'name': 'wang'} In [2]: a.get('age') In [3]: a['age'] --------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-3-a620cb7b172a> in <module>() ----&g

  • python中import reload __import__的区别详解

    import 作用:导入/引入一个python标准模块,其中包括.py文件.带有__init__.py文件的目录(自定义模块). import module_name[,module1,...] from module import *|child[,child1,...] 注意:多次重复使用import语句时,不会重新加载被指定的模块,只是把对该模块的内存地址给引用到本地变量环境. 实例: pythontab.py #!/usr/bin/env python #encoding: utf-8

  • Python探索之静态方法和类方法的区别详解

    面相对象程序设计中,类方法和静态方法是经常用到的两个术语. 逻辑上讲:类方法是只能由类名调用:静态方法可以由类名或对象名进行调用. python staticmethod and classmethod Though classmethod and staticmethod are quite similar, there's a slight difference in usage for both entities: classmethod must have a reference to

随机推荐