美文网首页
Python中 is 和 == 的区别

Python中 is 和 == 的区别

作者: Sunnky | 来源:发表于2018-08-10 10:54 被阅读0次
>>> a = 'hello'
>>> b = 'hello'
>>> a is b
True
>>> a == b
True
>>> a = 'hello world'
>>> b=  'hello world'
>>> a is b
False
>>> a == b
True
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b
False
>>> a == b
True
>>> a = [1, 2, 3]
>>> b = a
>>> a is b
True
>>> a == b
True

是不是很诧异,a, b都是‘hello’的时候is和==都是True,为什么是‘hello world’的时候就不一样了呢?

官方文档中说:

is 表示的是对象标示符(object identity),而 == 表示的是相等(equality)。is 的作用是用来检查对象的标示符是否一致,也就是比较两个对象在内存中的地址是否一样,而 == 是用来检查两个对象是否相等。我们在检查 a is b 的时候,其实相当于检查 id(a) == id(b)。而检查 a == b 的时候,实际是调用了对象 a 的 eq() 方法,a == b 相当于 a.eq(b)。一般情况下,如果 a is b 返回True的话,即 a 和 b 指向同一块内存地址的话,a == b 也返回True,即 a 和 b 的值也相等。

前面的问题涉及到python字符串的驻留机制:

  • 在交互模式下,每行字符串字面量都会申请一个新字符串,但是只含大小写字母、数字和下划线的会被intern(驻留),也就是维护了一张dict来使得这些字符串全局唯一。

所以,‘hello world’包含空格,不会驻留,所以两者不同。

>>> c = 'fdsafdsafdsafdsafhdsalfhdsiafhsadhfkdsahfkasdgfkasdgfksadgfkasdf'
>>> d = 'fdsafdsafdsafdsafhdsalfhdsiafhsadhfkdsahfkasdgfkasdgfksadgfkasdf'
>>> c is d
True
>>> m = 'a b'
>>> n = 'a b'
>>> m is n
False
>>> x = 'a_b12'
>>> y = 'a_b12'
>>> x is y
True
>>> x == y
True
>>>

总结:is 是检查两个对象是否指向同一块内存空间,而 == 是检查他们的值是否相等。可以看出,is 是比 == 更严格的检查,is 返回True表明这两个对象指向同一块内存,值也一定相同。

相关文章

  • 逻辑运算符和位运算符

    Python 中 (&,|)和(and,or)之间的区别_Python_Rowlingz-CSDN博客

  • Python 中 is 和 == 的区别

    Python 中的 is 和 == 今天聊一下Python中的 is 和 == 运算符的区别、 is和==都是对对...

  • 算术运算符

    需要注意的是幂:**取整除://"//"和'/'的区别是,在python2中没有区别,在python3中,'/'得...

  • Python中 is 和 == 的区别

    是不是很诧异,a, b都是‘hello’的时候is和==都是True,为什么是‘hello world’的时候就不...

  • Python 中 is 和== 的区别

    初学python的时候,发现python中== 用来比较两个string的值,之前用java的话,比较string...

  • python 中is和= = 的区别

    Python中的对象包含三要素:id、type、value 其中id用来唯一标识一个对象,type标识对象的类型,...

  • Python中is和==的区别

    Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么。 在讲is和==这两种运...

  • Python中“==”和“is”的区别

    is比较的是内存地址(可以用id()查看内存地址) ==比较值先在shell中输入以下代码:image.png 在...

  • Python中is和==的区别

    要理解Python中is和==的区别,首先要理解Python对象的三个要素: is和==区别 程序举例 例1: 例2:

  • Python中 is 和 == 的区别

    Python中的对象包含三要素:id、type、value。 id 用来唯一标识一个对象,type 标识对象的类型...

网友评论

      本文标题:Python中 is 和 == 的区别

      本文链接:https://www.haomeiwen.com/subject/aflkbftx.html