AI資格ドリル
資格を選ぶ

用語比較

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

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

値が同じならisも真になると考える初学者

a = [1, 2, 3] と b = [1, 2, 3] は、a == b はTrueですが、a is b はFalseです。値が同じでも、別々に作られたリストは別オブジェクトのため、isでは偽になります。

02

c = a を複製と考える人

c = a は新しいオブジェクトを作らず、aと同じオブジェクトをcという名前でも指すようにする代入です。この場合はa is cがTrueになり、cの内容を変更するとaの内容も変わります。値をコピーしたい場合はlist(a)のように新しいオブジェクトを作る必要があります。

03

isを値の比較に使ってしまう再受験者

値を比べたい場面でisを使うと、別オブジェクトなら値が同じでも偽になり、意図しない判定になります。値を比べたいときは==を使います。

問題文から答えを選ぶ手順

  1. 1

    調べたいのが「同じ物か」か「同じ値か」かを分ける

    同じオブジェクトかを知りたいならis、値が同じかを知りたいなら==を使います。

  2. 2

    代入だけかを確認する

    c = a のような代入は新しいオブジェクトを作らないため、a is cはTrueになります。

  3. 3

    別々に作られたオブジェクトかを確認する

    [1, 2, 3]を2回書くと、値が同じでも別オブジェクトが作られ、isはFalseになります。

  4. 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と==はどちらを使えばいい?

A

同じオブジェクトかを調べたいときはis、値が等しいかを調べたいときは==を使います。設問の要求に合わせて選びます。

Q値が同じならisもTrueになる?

A

いいえ。a = [1, 2, 3]、b = [1, 2, 3] のように別々に作ったオブジェクトは、値が同じでもa is bはFalseです。

Qc = a はaの複製を作る?

A

作りません。c = a はaと同じオブジェクトをcという名前でも指すようにする代入で、a is cはTrueになります。

Qisを値の比較に使うとどうなる?

A

別オブジェクトであれば値が同じでも偽になり、意図しない判定になります。値を比べたいときは==を使います。

次に見る比較

執筆: AI資格ドリル編集部(運営者情報を見る)