一、本质区别
符号 | 区别 |
---|---|
== | 操作符测试值的相等性; |
is | 表达式测试对象的一致性,即是否指向同一个对象。 |
二、实例说明
1、情况①
list1 = [1, 2, 3]
list2 = [1, 2, 3]
print(list1 == list2, list1 is list2) # True False
输出结果:
True False
list1和list2通过了”==”测试 (他们的值相等,因为它们的所有内容都是相等的),但是is测试却失败了(它们是两个不同的对象,因此有不同的内存区域)
2、情况②
s1 = 'python'
s2 = 'python'
print(s1 == s2, s1 is s2) # True True
输出结果:
True True
说明:或许你会惊讶,觉得这组得到的结果应该和上组得到的结果一致。事实上,内存中只有一个字符串’spam’供s1和s2共享。这个主要是因为在Python内部会暂时存储并重复使用短字符串。也就是说当创建短字符串的时候会首先到字符串的内存区域查找是否已经有该字符串相等的值存在,如果有则会指向该内存区域,否则重新开辟内存。类似java中的常量池概念。
三、赠语
不识庐山真面目,只缘身在此山中。
网友评论