同値性
同値性に関しては、数値、文字列、オブジェクトに関わらず、そのコンテンツのパターンが同じならTrueとなる。
同一性
数値の同一性
一般的な予想
数値に関しては、同値性と同一性が同じ結果になると予想される。
1 2 3 |
1 is 1 # True 1 is 2 # False 2 is (1+1) # True |
予想外
整数で一定の範囲外の場合は、同一ではない(is not)と評価される。
1 2 3 4 5 |
a = 256; b = 256; a is b # True a = 257; b = 257; a is b # False a = -5; b = -5; a is b # True a = -6; b = -6; a is b # False |
多重代入の場合は同一と評価されるが、変数に対して演算を施すと同一ではなくなる。
1 2 3 4 |
a = b = 257; a is b # True a *= 1; b *= 1; a is b #False a = b = -6; a is b # True a *= 1; b *= 1; a is b #False |
同一性の変化は、演算に対して可逆的。
1 2 3 |
a = b = 256; a is b # True a += 1; b += 1; a is b # False a -= 1; b -= 1; a is b # True |
文字列の同一性
1 2 3 |
'ABC' is 'ABC' # True 'ABC' is 'DEF' # False 'ABCD' is 'ABC' + 'D' # True |
1 2 |
a = 'ABCD'; b = 'ABC' + 'D'; a is b # True a = 'ABCD'; b = 'ABC'; b += 'D'; a is b # False |