is比较两个对象的标识是否相等
==比较的是对象的value是否相等
关于对象的标识和value的认识可以看我的另一篇博客
>>> a = "ab"
>>> b = "Ab"
>>> a is b
False
>>> a == b
False
>>> a.title() is b
False
>>> a.title() == b
True
>>> id(a.title())
76248936
>>> id(b)
76248208
上面的diamond有没有把你弄混啊,不要着急,看我慢慢分析,我们首先通过对象模型来解释这两个东西,请看下面图,当使用is
进行比较时,是检查两个对象的标识是否相同,发现两个标识不同,所以返回False
,当使用==
时,发现两个对象的value
相同,所以返回True
经过这么一分析,是否对is和==有了新的见解呢