Datehoer的博客
我本将心向明月,奈何明月照沟渠
Datehoer的博客

当前位置:主页 > 技术分享 > python is和==的区别是什么?

python is和==的区别是什么?

浏览: 作者:Datehoer 发布日期:2020-12-02 20:59:16 来源: 原创
众所周知,我们的python中有很多的运算符,其中有的是经常使用的有的是不常使用的,其中比较常用的有is==然后呢,他们其实有的时候是通用的,都是作为相等比值来使用的。但是有的时候,他们并不能划等号。
先上一下代码。
pythonis和==的区别

a = 257
b = 257
print(a is b)
print(a == b)
 
#out1: False
#out2: True
我们可以看到,虽然都定义的是257,但是我们通过print显示的时候,会发现is是false,==是true。这是为什么呢?
我们首先要先了解一下python中对象包含的三个基本要素。分别是id(身份标识),type(对象类型),value(对象值)。
然后我们再看一下is和==的介绍。

is  ----  比较的是两个对象的id值是否相等,也就是比较俩对象是否为同一个实例对象,是否指向同一个内存地址。
==  ----  比较的是两个对象的内容是否相等,默认会调用对象的__eq__()方法。

== 是 python中标准操作符的比较操作符,它是用来比较判断两个对象的 value (值) 
通过==我们可以得到这两个对象的值是否相等。

a = 'cheesezh'
b = 'cheesezh'
print(a == b)
#True
is 也被称为同一性运算符,它是比较判断对象间的唯一身份标识,也就是 id 是否相同。
Python程序是由代码块构成的,其中代码块是作为程序最小的基本单位来执行,代码块是一个模块文件、一个函数体、一个类、交互式命令中的单行代码,Python出于对性能的考虑,但凡是不可变对象,在同一个代码块中的对象,只有是值相同的对象,就不会重复创建,而是直接引用已经存在的对象。
通过以上的内容,可以得到的结论是,同一个代码块中的不可变的对象,只要他们的值是相等的就不会重复创建新的对象。而是通过引用等方法来调用同一地址的值。小整数对象[-5,256]是全局解释器范围内可以被重复使用的对象,永远不会被回收。

不过今天其实主要是因为在搬宿舍,没什么时间来写文章了,所以发了篇之前的凑付一下。

通过以上的内容,不知道你是否还有疑惑,如果有什么不懂的可以在评论区留言,我会在看到的第一时间进行回复的。


版权:本文由Datehoer原创,著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接本文链接:https://zjzdmc.top/jsfx/74.html。

文章推荐

热门标签

返回顶部
下面为相关推荐
说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!