is
** is比较的对象为内存地址
1 | 1,2,3] a = [ |
==
** ==比较的对象是值
1 | 1,2,3] a = [ |
关于int类型的缓存
1 | 1 a = |
上述当ab都等于1的时候,两者指向的内存地址一致,但当ab赋值了999后,两者指向的内存地址不一致。
产生的原因
python对于int类型进行缓存,当int属于[-5, 256]范围的时候,会被缓存,倘若在这个区间进行赋值,则指向的内存地址都是一致的。
这个产生的原因比较复杂,倘若a和b都赋值在同一行,则两者is比较也是True,具体可以看refer。
https://stackoverflow.com/questions/15171695/whats-with-the-integer-cache-inside-python