python也学习了一段时间了, 深感坚持学习不易, 所有这里记录一下学习到的一些知识,希望能够与大家分享交流。
一个生活中的例子
“==”和“is”的区别 也可以说是 相同 和 想等的区别, 试想有两只双胞胎猫, 它们的外表看起来完全相同, 都有黑色的毛发以及绿色眼睛, 单从外表无从分别这两只猫,
但不可否认的是, 它们依然是两只不同的猫,两个不懂的个体生命。
这里引出相等 和 相同 两者之间的含义是有所区别的, ==比较的是相等性,用它比较的结果是两只猫是一样的, 这样可能有些抽象, 单从外表来看是这样的。
而 is 操作符 比较的是相同性, 相比 双等于号操作符 ,更加的严谨, 不一样就是不一样
两只猫从本质上来讲是不同的, 仅仅是外表相同而已。
在看晕之前, 看一些有助于理解的代码
这里创建一个列表a ,并赋值给b,同时打印结果
a =[1,2,3]
b = a
打印结果:
[1, 2, 3]
[1, 2, 3]
毫无疑问,二者相同, 由于二者内容相同, 所以用 == 操作符得到结果:
print(a == b)
True
上面的操作没有告诉我们二者是否指向同一个对象,所以使用is操作符来检测:
print(a is b)
True
结果是指向同一个对象, 也就是二者是一样的, 也是相同的。
再创建一个与a列表完全相同的副本, 对a列表调用 list,
c = list(a)
print(c)
结果自然和a列表一样:
[1, 2, 3]
再用两个操作符测试一下是否相同:
print(a == c)
到这里应该毋庸置疑, 二者内容肯定是相同的
True
那么由列表a创建的副本是否是相等的呢?看一下:
print(c is a)
False
二者不相等, 也很明显, 二者是指向两个不同的变量, 虽然内容相同, 但是不想等
回到两只猫上面, 纵然两只猫是双胞胎, 二者外表相同, 但本质是不同的两只猫。
总结一下
- 当两个变量指向同一个变量时, is 表达式的结果为 True,==操作符更不用说,也是True.
- 当各个变量指向的对象的内容相同时, == 表达式的结果为 True, is 表达式的结果不一定为True,.
以上是全部内容, 第一次写博客,以后会将学到的知识陆续记下来。共同学习。