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

Python中 is 和 == 的区别

作者: 什么23 | 来源:发表于2019-11-20 00:50 被阅读0次

现象

1 + 1 == 2

1 + 1 is 2

True
True

运行以上两段代码的话,所得到的结果都会是True。这么看起来 == 和 is 的功能貌似是一样的。

l1 = [1, 2, 3, 4]
l2 = [1, 2, 3, 4]
print(l1 == l2)
print(l1 is l2)

True
False

以上的代码,== 打印的 True ,而 is 打印的 False 。这么看 == 和 is 还是有区别的。

先说结论

  • == 判断的是两个对象的值是否相等
  • is 判断的是两个对象的内存地址是否相等
  • 在值相同的情况下,可变对象的内存地址不同,不可变对象的内存地址相同

什么意思

== 判断的是两个对象的值是否相等

像上面的第二个例子,l1 和 l2 的值长得就完全一样,所以他们 == 的比较结果就是 True。说白了 == 两边只要长得完全一样那返回的结果就是 True ,反之返回False。唯一有些不同的是数字,不光比较长相,还比较最后的运算结果。

is 判断的是两个对象的内存地址是否相等

通过内置函数id()可以查看对象在内存中的地址。is 判断的就是这两个对象的内存地址,而不管他们的值是否相同。长得不同的对象,它们的内存地址肯定也不同。长得相同的对象,他们的内存地址也不一定相同。当然,数字依然要看最后的计算结果。

在值相同的情况下,可变对象的内存地址不同,不可变对象的内存地址相同

可变对象包括:列表、字典、集合。不可变对象包括:字符串、元祖、数字。还是上面第二个例子。虽然 l1 和 l2 长的完全一样,也就是值相同。但是,列表是一个可变对象,通过id函数可以知道他们的内存地址是并不相等的。

相关文章

  • 逻辑运算符和位运算符

    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/gefnictx.html