PythonのID演算子「is」「is not」とは?オブジェクトの同一性を比較する方法
PythonにおけるオブジェクトのIDとは
Pythonでは、すべてのオブジェクトがメモリ上に格納される際に、一意の識別番号(ID)が割り当てられます。このIDは、組み込み関数 id() を使うことで取得できます。
is 演算子の働き
is 演算子は、2つのオブジェクトの id() を比較する演算子です。両者が同じIDを持っている場合(つまり、同じオブジェクトを参照している場合)には True を返し、そうでなければ False を返します。
is not 演算子の働き
一方、is not 演算子はその逆の動作をします。2つのオブジェクトの id() が同じ場合には False を、異なる場合には True を返します。
以下のインタプリタでの実行例を見ると、これらの演算子の挙動がよく分かります。
>>> a = 10 >>> b = a >>> id(a), id(b) (1581561184, 1581561184) >>> a is b True >>> a is not b False >>> a = 10 >>> b = 20 >>> id(a), id(b) (1581561184, 1581561504) >>> a is b False >>> a is not b True
実行結果のポイント
- 最初の例では、
b = aによってbがaと同じオブジェクトを参照しているため、両者のid()は一致し、a is bはTrueになります。 - 2つ目の例では、
aとbはそれぞれ別の整数オブジェクト(10 と 20)を参照しているため、IDが異なり、a is bはFalse、a is not bはTrueとなります。
== 演算子との違いに注意
is 演算子はオブジェクトの同一性(同じメモリ上のオブジェクトかどうか)を比較するのに対し、== 演算子はオブジェクトの値が等しいかどうかを比較します。この違いを理解しておくことは、Pythonプログラミングにおいて非常に重要です。特に可変オブジェクト(リストや辞書など)を扱う際には、意図せず is を使ってしまうと予期しない結果になることがあるため、注意しましょう。
-
Python 3の標準データ型とは?数値・シーケンス・辞書の基本をわかりやすく解説
Python 3の標準データ型の概要Python 3に標準で用意されているデータ型は、大きく分けて「数値型」「シーケンス型」「辞書(ディクショナリ)型」の3つに分類できます。辞書はキーと値のペアを格納するコレクションであり、Pythonプログラミングにおいて最も頻繁に使われるデータ構造の一つです。数値型(Numeric Types)数値型には「整数(int)」「浮動小数点数(float)」「複素数(complex)」の3種類があります。整数(int):小数点を含まない整数値です。例:10、-10浮動小数点数(float):小数部分を持つ実数です。例:1.55、0.005複素数(complex)
-
Pythonの主なデータ型変換関数まとめ|int・float・str・listなどの使い方を実例付きで解説
Pythonには、あるデータ型から別のデータ型へ値を変換するための組み込み関数が多数用意されています。この記事では、数値変換やコレクション変換に使える主要なデータ変換関数を、実際の実行例とともにわかりやすく解説します。 数値データの変換関数 int():整数への変換 浮動小数点数や、整数を表す文字列を整数(int)オブジェクトに変換します。文字列を変換する場合は、第2引数に基数を指定することで、8進数や16進数の文字列を整数に変換することもできます。 >>> int(11) 11 >>> int(11.15) 11 >>> int(2