Python
 Computer >> コンピューター >  >> プログラミング >> Python

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 によって ba と同じオブジェクトを参照しているため、両者の id() は一致し、a is bTrue になります。
  • 2つ目の例では、ab はそれぞれ別の整数オブジェクト(10 と 20)を参照しているため、IDが異なり、a is bFalsea is not bTrue となります。

== 演算子との違いに注意

is 演算子はオブジェクトの同一性(同じメモリ上のオブジェクトかどうか)を比較するのに対し、== 演算子はオブジェクトの値が等しいかどうかを比較します。この違いを理解しておくことは、Pythonプログラミングにおいて非常に重要です。特に可変オブジェクト(リストや辞書など)を扱う際には、意図せず is を使ってしまうと予期しない結果になることがあるため、注意しましょう。

  1. Python 3の標準データ型とは?数値・シーケンス・辞書の基本をわかりやすく解説

    Python 3の標準データ型の概要Python 3に標準で用意されているデータ型は、大きく分けて「数値型」「シーケンス型」「辞書(ディクショナリ)型」の3つに分類できます。辞書はキーと値のペアを格納するコレクションであり、Pythonプログラミングにおいて最も頻繁に使われるデータ構造の一つです。数値型(Numeric Types)数値型には「整数(int)」「浮動小数点数(float)」「複素数(complex)」の3種類があります。整数(int):小数点を含まない整数値です。例:10、-10浮動小数点数(float):小数部分を持つ実数です。例:1.55、0.005複素数(complex)

  2. Pythonの主なデータ型変換関数まとめ|int・float・str・listなどの使い方を実例付きで解説

    Pythonには、あるデータ型から別のデータ型へ値を変換するための組み込み関数が多数用意されています。この記事では、数値変換やコレクション変換に使える主要なデータ変換関数を、実際の実行例とともにわかりやすく解説します。 数値データの変換関数 int():整数への変換 浮動小数点数や、整数を表す文字列を整数(int)オブジェクトに変換します。文字列を変換する場合は、第2引数に基数を指定することで、8進数や16進数の文字列を整数に変換することもできます。 >>> int(11) 11 >>> int(11.15) 11 >>> int(2