Python 中的 is 和 ==
is 比较的是两个对象的 id 是否相同,可以理解为指针是否指向同一个内存地址;
== 比较的是值是否相同,默认通过调用对象的 eq() 方法来比较值。
需要注意一些情况,比如
a = 256 b = 256 此时 a is b 是True,因为 Python 中[-5, 256]之间的整数对象做了缓存,所以ab指向同一个空间。
而 a = 1000, b = 1000 此时is就不相等了。
另外就是 None 在判断是否为空时, is 和 == 都可以,因为 None 应该也是做了缓存,不同的 None 都指向同一个空间。用is的话maybe效率会高一些,因为不需要经过 eq 函数,直接比较地址即可。
上次更新: 2020/09/19, 22:09:00