Python 3における”is”演算子の予期せぬ動作について
Python 3における”is”演算子は、整数値に対して予期せぬ動作を示すことがあります。これは、整数値が小さな範囲のキャッシュされたオブジェクトとして扱われるためです。通常、Pythonは-5から256までの整数をキャッシュしており、同じ値を持つ整数リテラルは同じオブジェクトを参照します。しかし、このキャッシュの仕組みが”is”演算子の挙動に影響を与えることがあります。
具体的な例
a = 10 b = 10 print(a is b) # True c = 1000 d = 1000 print(c is d) # False
上記の例では、整数値10はキャッシュされているため、変数aとbは同じオブジェクトを参照しているため、”is”演算子はTrueを返します。一方、整数値1000はキャッシュされていないため、変数cとdは異なるオブジェクトを参照しており、”is”演算子はFalseを返します。
注意点
“is”演算子はオブジェクトの同一性を比較するものであり、値の等価性を確認するためには”==”演算子を使用するべきです。整数値の比較においては、”==”演算子を使用することで予期せぬ動作を避けることができます。
Python 3における[“is”演算子は、整数値に対して予期せぬ動作を示すことがあります。”is”演算子は、オブジェクトの同一性を比較するために使用されますが、整数値の場合は整数のキャッシュによる動作が影響を与えることがあります。整数値が-5から256の範囲内の場合、Pythonは整数のキャッシュを使用して同じオブジェクトを再利用するため、”is”演算子で比較するとTrueが返されることがあります。しかし、この範囲外の整数値や大きな整数値の場合は、”is”演算子での比較結果がFalseになることがありますので注意が必要です。