用語比較
isと==の違い|オブジェクトの同一性と値の等価性をPython3エンジニア認定基礎試験で判断する
公式チュートリアル5.7節は「演算子 is および is not は、二つのオブジェクトが実際に同じオブジェクトであるかどうかを調べます」と説明しています。同節は (1, 2, 3) == (1.0, 2.0, 3.0) が True になる例を示しており、== は値が等しいかどうかを調べる演算子です。isは同じオブジェクトかどうかを調べ、==は値が等しいかどうかを調べるという違いがあります。
Python 3 エンジニア認定基礎試験では、値が同じであっても、isでは別オブジェクトと判定される組み合わせが出ます。たとえば a = [1, 2, 3] と b = [1, 2, 3] のように同じ内容のリストを別々に作ると、a == b は True になりますが、a is b は False になります。中身の値は同じでも、a と b はメモリ上の別のオブジェクトだからです。
このページは、「値が同じならisも真になる」と演算子を見ずに結果を予想してしまう人を対象にしています。設問中のコードが同じオブジェクトを指しているか、それとも別々に作られたオブジェクトを指しているかを先に確認する手順を扱います。
この記事の目次
この記事の根拠と出典
本文の主要なセクションでは、公式一次資料と照合した内容と編集部の整理を、見出しの下のラベルで区別しています。 試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。 当サイトの一次情報確認日: 2026-09-18。
結論
is
二つのオブジェクトが実際に同じオブジェクトであるかどうかを調べる演算子。a is b は、a と b が同じオブジェクトを指す場合にTrueになる。
==
値が等しいかどうかを調べる演算子。a == b は、a と b の中身の値が同じであればTrueになる。オブジェクトが別であっても成立する。
違いを表で確認
| 比較軸 | is | == |
|---|---|---|
| 調べる対象 | オブジェクトの同一性(同じ物か) | 値の等価性(同じ値か) |
| 公式チュートリアルの説明 | 「演算子 is および is not は、二つのオブジェクトが実際に同じオブジェクトであるかどうかを調べます」 | 値が等しいかどうかを調べる演算子((1, 2, 3) == (1.0, 2.0, 3.0) はTrue) |
| a = [1, 2, 3]、b = [1, 2, 3] の場合 | a is b は False(別オブジェクト) | a == b は True(値が同じ) |
| c = a とした場合 | a is c は True(同じオブジェクトを指す) | a == c も True(値も同じ) |
どこで迷っているかを切り分ける
値が同じならisも真になると考える初学者
a = [1, 2, 3] と b = [1, 2, 3] は、a == b はTrueですが、a is b はFalseです。値が同じでも、別々に作られたリストは別オブジェクトのため、isでは偽になります。
c = a を複製と考える人
c = a は新しいオブジェクトを作らず、aと同じオブジェクトをcという名前でも指すようにする代入です。この場合はa is cがTrueになり、cの内容を変更するとaの内容も変わります。値をコピーしたい場合はlist(a)のように新しいオブジェクトを作る必要があります。
isを値の比較に使ってしまう再受験者
値を比べたい場面でisを使うと、別オブジェクトなら値が同じでも偽になり、意図しない判定になります。値を比べたいときは==を使います。
問題文から答えを選ぶ手順
- 1
調べたいのが「同じ物か」か「同じ値か」かを分ける
同じオブジェクトかを知りたいならis、値が同じかを知りたいなら==を使います。
- 2
代入だけかを確認する
c = a のような代入は新しいオブジェクトを作らないため、a is cはTrueになります。
- 3
別々に作られたオブジェクトかを確認する
[1, 2, 3]を2回書くと、値が同じでも別オブジェクトが作られ、isはFalseになります。
- 4
値を比べたいならisを使わない
値の比較が目的の設問でisが使われている場合、結果を==の場合と混同しないようにします。
試験での見分け方
- 1is は二つのオブジェクトが実際に同じオブジェクトであるかどうかを調べる。
- 2== は値が等しいかどうかを調べる。
- 3同じ値でも別々に作られたオブジェクトなら、isはFalseになる。
- 4c = a のような代入は同じオブジェクトを指すだけなので、a is cはTrueになる。
誤答しやすい選択肢
値が同じだからisも真になると考える
修正: 値が同じでも、別々に作られたオブジェクトであればisはFalseになります。a = [1, 2, 3]、b = [1, 2, 3] のとき、a == bはTrueですがa is bはFalseです。
isを値の比較として使う
修正: isはオブジェクトの同一性を調べる演算子です。値を比べたいときは==を使います。
c = a を複製だと考える
修正: c = a は新しいオブジェクトを作らず、aと同じオブジェクトをcという名前でも指すようにする操作です。a is cはTrueになり、複製にはなりません。
確認問題
Q1a = [1, 2, 3]、b = [1, 2, 3] のとき、a == b の結果はどれ?
答え: True
== は値が等しいかどうかを調べる演算子です。aとbは別オブジェクトですが、中身の値は同じなのでTrueになります。
Q2a = [1, 2, 3]、b = [1, 2, 3] のとき、a is b の結果はどれ?
答え: False
is は二つのオブジェクトが実際に同じオブジェクトであるかどうかを調べる演算子です。aとbは別々に作られた別オブジェクトなのでFalseになります。
Q3a = [1, 2, 3]、c = a のとき、a is c の結果はどれ?
答え: True
c = a はaと同じオブジェクトをcという名前でも指すようにする代入です。aとcは同じオブジェクトなのでisはTrueになります。
Q4(1, 2, 3) == (1.0, 2.0, 3.0) の結果はどれ?
答え: True
公式チュートリアル5.7節が示す例です。== は値が等しいかどうかを調べるため、整数と浮動小数点数でも値が同じならTrueになります。
到達チェック
- isが二つのオブジェクトが実際に同じオブジェクトであるかどうかを調べる演算子だと説明できる
- ==が値が等しいかどうかを調べる演算子だと説明できる
- 値が同じでも別オブジェクトならisがFalseになる例を挙げられる
- c = a のような代入がaと同じオブジェクトをcという名前でも指すことを説明できる
関連ページで確認する
よくある質問
Qisと==はどちらを使えばいい?
同じオブジェクトかを調べたいときはis、値が等しいかを調べたいときは==を使います。設問の要求に合わせて選びます。
Q値が同じならisもTrueになる?
いいえ。a = [1, 2, 3]、b = [1, 2, 3] のように別々に作ったオブジェクトは、値が同じでもa is bはFalseです。
Qc = a はaの複製を作る?
作りません。c = a はaと同じオブジェクトをcという名前でも指すようにする代入で、a is cはTrueになります。
Qisを値の比較に使うとどうなる?
別オブジェクトであれば値が同じでも偽になり、意図しない判定になります。値を比べたいときは==を使います。
執筆: ミナト編集部(運営者情報を見る)