我们经常用的== 其实就是语法糖的一种
==其实比较的是对象中保存的值所以==出现的频率比is高
然后在变量和单例之间比较时(就是不是判断两者值相同的时候)应当使用Is
is 判断的事两者的内存地址 而且is确实比等等快, 因为is不需要重载
比如 i is None判断某个值是否为None
不为None的时候应选择 i is not None
我们做一项匹配试一下
我有一个列表, list1
现在我工厂函数创建一个与之相同的列表
然后我们先用== 判断一下是否通过
不出意外匹配值成功了.
再试试list2 is list1
果然失败了.
都知道工厂函数创建list是浅拷贝 也就是外层容器list 被换掉了. 我们在看看两者的地址
这确实证实了 is 判断的是地址 而 ==判断的是对象的值