python == 与 is区别
刷到一个面试题 python中 == 与 is 的区别
根据以往的经验,这个问题应该考察的是运算符根据地址 还是值进行比较的
s1 = ['a']
s2 = ['a']
s3 = s1
print(s1 == s2) # True 值相等
print(s1 == s3) # True 值相等
print(s1 is s2) # False 值相等,引用地址不相等
print(s1 is s3) # True 值相等,引用地址相等
根据上面的情况,得到的结论:
- ==:值相等性判断
- is:判断两个标识符是不是引用自一个对象,x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
再看个例子
>>> str1='sten_waves'
>>> str2='sten_waves'
>>> str1 is str2
True
先说一下前面的结论是对的,这个例子中str1和str2的地址是相同的,原因是内存驻留机制,可以参考:Python中的字符串驻留机制_在python中,任意长的字符串都遵守驻留机制。-CSDN博客