广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python中“==”和“is”有什么区别
  • 454
分享到

python中“==”和“is”有什么区别

2023-06-27 11:06:05 454人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容主要讲解“python中“==”和“is”有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中“==”和“is”有什么区别”吧!“==” 和 “is”之间有什么区别?“

本篇内容主要讲解“python中“==”和“is”有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习Python中“==”和“is”有什么区别”吧!

“==” 和 “is”之间有什么区别?

“==”和“is”都是 Python 中的运算符。对于初学者,他们可能会把“ a==b ”解释为“ a 等于 b ”,“a is b”也可以解释为“ a是b ”。这可能就是初学者在Python 中混淆“ == ”和“ is ”的原因。

在开始之前,我想先展示一些使用“==”和“is”的例子。

>>> a = 5>>> b = 5>>> a == bTrue>>> a is bTrue

很简单,对吧?a == ba is b 都返回了结果 True。接下来我们看另一个示例:

>>> a = 1000>>> b = 1000>>> a == bTrue>>> a is bFalse

WTF ?!? 从第一个示例到第二个示例的唯一变化就是 a 和 b 的值从 5 到 1000。但是返回的结果在 “==” 和 “is” 已经不同。我们再看另一个示例:

>>> a = []>>> b = []>>> a == bTrue>>> a is bFalse

下面是最后一个例子,看完是不是觉得自己的脑子要爆炸?

>>> a = 1000>>> b = 1000>>> a == bTrue>>> a is bFalse>>> a = b >>> a == bTrue>>> a is bTrue

==”的正式运算是相等,而“is”的运算是标识。 一般使用“==”来比较两个对象的值。 “ a == b”应解释为“ a的值是否等于b的值”。 在上述所有示例中,a 的值始终等于 b 的值(即使对于空列表示例也是如此)。 因此,“a == b”始终为真。

(推荐教程:python教程)

在解释身份之前,我需要先介绍id 函数。 我们可以使用 id 函数获得对象的标识。 这个身份在整个时间内对于此对象都是唯一且恒定的。此标识在整个时间内对该对象是唯一且不变的。你可以把它看作是这个对象的地址。如果两个对象具有相同的标识,则它们的值也必须相同。

>>> id(a)2047616

运算符“ is ”是比较两个对象的标识是否相同。“a is b”的意思是“a的身份与b的身份相同”。

如果你知道“ ==”和“ is”的实际含义,我们就可以开始研究上面的几个示例了。

首先是第一个和第二个示例中的结果不同。 显示不同结果的原因是Python存储了一个介于-5到256之间的整数的数组列表,每个整数具有固定的标识。当我们在此范围内分配整数变量时,Python会将此变量的标识分配为数组列表内整数的整数。 结果,对于第一个示例,由于ab的标识都是从数组列表中获得的,因此它们的标识当然是相同的,因此 “a is b” 为True

>>> a = 5>>> id(a)1450375152>>> b = 5>>> id(b)1450375152

但是一旦该变量的值超出该范围,由于 Python 内部没有具有该值的对象,因此Python将为此变量创建一个新的标识并将该值分配给该变量。 如前所述,身份对于每个创建都是唯一的,因此,即使两个变量的值相同,其身份也永远不会相等。 这就是为什么“a is b”在第二个例子结果为False

>>> a = 1000>>> id(a)12728608>>> b = 1000>>> id(b)13620208

PS:如果你打开了两个控制台,该值仍在该范围内,那么你将获得相同的标识。但是,如果该值不在该范围内,则结果就会发生改变。

python中“==”和“is”有什么区别

如果你理解了第一示例和第二示例之间的区别,就很容易理解第三示例的结果。由于 Python 不存储“空列表”对象,因此 Python 创建了一个新对象并分配了“空列表”值。无论两个列表为空还是元素相同,结果都是相同的。

>>> a = [1,10,100,1000]>>> b = [1,10,100,1000]>>> a == b True>>> a is bFalse>>> id(a)12578024>>> id(b)12578056

接下来,我们转到最后一个示例。第二个和最后一个示例之间的唯一区别是还有一行代码 a = b,正是这行代码改变了变量 a 的命运。以下结果将告诉你真实原因:

>>> a = 1000>>> b = 2000>>> id(a)2047616>>> id(b)5034992>>> a = b>>> id(a)5034992>>> id(b)5034992>>> a2000>>> b2000

如上所示,在 a = b 之后,a 的身份更改为 b 的身份。a = b 将 b 的身份分配给 a 。因此 a 和 b 具有相同的标识,因此 a 的值现在与 b 的值相同(即2000)。

(推荐微课:python3基础微课)

最后一个示例告诉我们一个重要消息,即我们可能会无意中更改对象的值,而不会事先通知,尤其是当对象是列表时。

>>> a = [1,2,3]>>> id(a)5237992>>> b = a>>> id(b)5237992>>> a.append(4)>>> a[1, 2, 3, 4]>>> b[1, 2, 3, 4]

在上面的示例中,由于 a 和 b 具有相同的标识,因此它们的值必须相同。 所以,在将新元素添加到 a 之后,b 的值也会受到影响。为避免这种情况,如果要将值从一个对象复制到另一个对象而不引用相同的标识,则所有方法之一是在 copy 模块中使用 deepcopy 。 对于列表,我们还可以通过 b = a [:] 执行。

>>> import copy>>> a = [1,2,3]>>> b= copy.deepcopy(a)>>> id(a)39785256>>> id(b)5237992

使用[:]将元素复制到新变量。

>>> a = [1,2,3]>>> id(a)39785256>>> b = a[:]>>> id(b)23850216>>> a.append(4)>>> a[1, 2, 3, 4]>>> b[1, 2, 3]

到此,相信大家对“python中“==”和“is”有什么区别”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: python中“==”和“is”有什么区别

本文链接: https://www.lsjlt.com/news/309910.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python中“==”和“is”有什么区别
    本篇内容主要讲解“python中“==”和“is”有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python中“==”和“is”有什么区别”吧!“==” 和 “is”之间有什么区别?“...
    99+
    2023-06-27
  • python中in和is有什么区别
    这篇文章主要介绍了python中in和is有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、区别说明in:一方面可以用于检查序列(list,range,字符串等)中...
    99+
    2023-06-15
  • python中使用==和is有什么区别
    本篇内容介绍了“python中使用==和is有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!“==” 和 “is”之间有什么区别“=...
    99+
    2023-06-16
  • Python中 is 和 == 区别
    Python中is和==的区别,如下: 环境是在IPython做的测试 在Python中 is是一个对象标识符(object identity ),== 表示相(equality);is 是通过对象所指向的内存地址是否相等来进行判断== 则...
    99+
    2023-01-31
    区别 Python
  • python中in和is有哪些区别
    这篇文章主要介绍了python中in和is有哪些区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、区别说明in:一方面可以用于检查序列(list,range,字符串等)中...
    99+
    2023-06-15
  • Python中==与is的区别是什么
    这篇文章主要介绍“Python中==与is的区别是什么”,在日常操作中,相信很多人在Python中==与is的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中==与is的区别是什么”的疑...
    99+
    2023-06-16
  • python中apply和transform有什么区别
    这篇文章将为大家详细讲解有关python中apply和transform有什么区别,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python是什么意思Python是一种跨平台的、具有解释性、...
    99+
    2023-06-15
  • python中Queue和pipe有什么区别
    python中Queue和pipe有什么区别?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注...
    99+
    2023-06-14
  • python中sleep和wait有什么区别
    这期内容当中小编将会给大家带来有关python中sleep和wait有什么区别,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyth...
    99+
    2023-06-14
  • python中HTTP和HTTPS有什么区别
    python中HTTP和HTTPS有什么区别?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、区别(1)https协议需要向ca申请证书,一般免费证书很少,所以需要一定的费用。...
    99+
    2023-06-15
  • python中__init__ 和__new__有什么区别
    python中__init__ 和__new__有什么区别?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python的五大特点是什么python的五大特点:1....
    99+
    2023-06-15
  • Python中time.clock和 time.time有什么区别
    这期内容当中小编将会给大家带来有关Python中time.clock和 time.time有什么区别,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python有哪些常用库python常用的库:1.requ...
    99+
    2023-06-14
  • python中strftime和strptime有什么区别
    这篇文章将为大家详细讲解有关python中strftime和strptime有什么区别,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python的数据类型有哪些python的数据类型:1. ...
    99+
    2023-06-14
  • python中return和print有什么区别
    本篇文章给大家分享的是有关python中return和print有什么区别,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python主要用来做什么Python主要应用于:1、W...
    99+
    2023-06-14
  • Python中json.load()和json.loads()有什么区别
    小编给大家分享一下Python中json.load()和json.loads()有什么区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、图解json.load...
    99+
    2023-06-15
  • pycharm和python有什么区别
    pycharm和python区别是:1、PyCharm是一款软件开发工具,而Python则是一种编程语言;2、PyCharm提供了丰富的功能和工具,而Python本身提供了各种库和模块;3、PyCharm主要用于编写、调试和运行Python...
    99+
    2023-12-09
    pycharm python
  • Python和JavaScript有什么区别
    Python和JavaScript有什么区别?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各...
    99+
    2023-06-14
  • 一文搞懂Python中is和==的区别
    目录==比较操作符和is同一性运算符区别哪些情况下is和==结果是完全相同的?为什么256时相同, 而1000时不同?结论==比较操作符和is同一性运算符区别哪些情况下is和==结果...
    99+
    2023-01-10
    Python中is和==的区别 Python中is用法
  • python中in和is的区别点总结
    1、区别说明 in:一方面可以用于检查序列(list,range,字符串等)中是否存在某个值。也可以用于遍历for循环中的序列。 is:用于判断两个变量是否是同一个对象,如果两个对象是同一对象,则返回True,否则返...
    99+
    2022-06-02
    python in is
  • Python中字典和json有什么区别
    本篇文章为大家展示了Python中字典和json有什么区别,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端开发,众多...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作