どっちも等しいかどうかの比較演算子だけど、簡単に言うと、== は値として等しいか(同値性)で、is はオブジェクトとして等しいか(同一性)の判定をする。だから次のようにaとbに別々に代入した場合では、値が等しくてもオブジェクトとしては等しくないので is での比較の結果は False になる。
>>> a = (1,2,3) >>> b = (1,2,3) >>> a == b True >>> a is b False
id関数でオブジェクトのIDをみても、べつのオブジェクトだということがわかる。
>>> id(a) 5089160 >>> id(b) 4602696
一方で、bにaを代入した場合には、オブジェクトとしても等しいので、== でも is でも True になる。
>>> a = (1,2,3) >>> b = a >>> a == b True >>> a is b True
ちなみに否定の場合は is not。
>>> a is b True >>> a is not b False