用語比較
isと==の違い|オブジェクトの同一性と値の等価性をPython3エンジニア認定基礎試験で判断する
isは二つのオブジェクトが実際に同じオブジェクトかどうかを、==は値が等しいかどうかを調べる演算子です。公式チュートリアル5.7節は、(1, 2, 3) == (1.0, 2.0, 3.0) が True になる例を示しています。
試験では、値が同じでも、isでは別オブジェクトと判定される組み合わせが出ます。同じ内容のリストを別々に作った a と b では、a == b は True、a is b は False です。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。
isと==の要点
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(値も同じ) |
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
PRどこで迷っているかを切り分ける
値が同じなら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という名前でも指すことを説明できる
関連ページで確認する
同じ資格で次に知りたいこと
- dataclassと通常のクラスの違い|データをまとめるクラスの書き方をPython3エンジニア認定基礎試験で判断する
dataclassと通常のクラスの違いを、公式チュートリアル9.7が示す名前付きのデータ項目をまとめる書き方、__init__を書く手間、print表示と==の結果、型注釈の扱いまで、Python 3 エンジニア認定基礎試験での判断手順と確認問題つきで解説します。
- del文とpop()の違い|返り値・スライス・リスト全体の削除をPython3エンジニア認定基礎試験で判断する
del文とlist.pop()の違いを、公式チュートリアルの記述、返り値の有無、スライスとリスト全体の削除、Python 3 エンジニア認定基礎試験での判断手順と確認問題まで解説します。
- セイウチ演算子 := と代入文 = の違い|式の中での代入をPython3エンジニア認定基礎試験で判断する
セイウチ演算子 := と代入文 = の違いを、公式チュートリアル5.7が示す式の中での代入の書き方、==と書くべき所に=を書く誤りを防ぐ理由、丸括弧が要る場面、Python 3 エンジニア認定基礎試験での判断手順と確認問題まで解説します。
よくある質問
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を値の比較に使うとどうなる?
別オブジェクトであれば値が同じでも偽になり、意図しない判定になります。値を比べたいときは==を使います。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: AI資格ドリル編集部(運営者情報を見る)
