Python

Python初学者向け:「is」演算子と「==」演算子の違いを基本から解説

スポンサーリンク

 

この記事はこんな方におススメです
  • Pythonを始めたばかりで基本から学びたい方
  • Pythonの基本的な部分を速習してまずは全体像を把握しておきたい方

はじめに

今回は、is演算子、==演算子について基本から解説します。Pythonには「同じであるか」を判定する演算子として「is」演算子と「==」演算子があります。この2つの演算子の違いがわかりますか?それぞれの演算子が何を判定するのかを基本から解説します。

同じであるかを判定する

「==」演算子

「==」演算子は同値判定をします。つまり「値」が同じであるかを判定する演算子です。少し例をみてみましょう。

list_a = [1,2]
list_b = [1,2]

# リストの比較(==演算子)
a == b
リストの比較(==演算子)

これはイメージ通りの結果ですね。文字列についても確認しておきましょう。

string_a = 'らくだ'
string_b = 'らくだ'

# 文字列の比較(==演算子)
string_a == string_b
文字列の比較(is演算子)

こちらも予想通りの結果ですね。このように「==」演算子は値が同じであるかどうかを判定します。

# リストの比較(is演算子)
list_a is list_b

「is」演算子

「is」演算子は同一オブジェクトを判定します。つまり「オブジェクト」が同一であるかを判定する演算子です。

先ほど作った、list_a, list_bを比較してみましょう。

リストの比較(is演算子)

今度はFalseとなります。list_a = [1,2], list_b = [1,2]であっても、別オブジェクトなので同じではない(False)となります。次にlist_c = list_aとしてこれを比較してみましょう。

list_c = list_a

# リストの比較
list_a is list_c
リストの比較(list_aとlist_c)

これはTrueとなります。「is」演算子による比較ではオブジェクト名が同じであるかではなく、実体が同じであるかどうかを比較しています。「実体」はid()で確認することができます。list_a, list_b, list_cのidを確認してみましょう。

# idの確認
print('list_aのidは{}です'.format(id(list_a)))
print('list_bのidは{}です'.format(id(list_b)))
print('list_cのidは{}です'.format(id(list_c)))
idの比較(リスト)

idをみるとlist_aとlist_bは異なっています。一方、list_aとlist_cは同じです。なので、先ほどの結果となるのです。

文字列についても見ておきましょう。

# 文字列の比較(is演算子)
string_a is string_b
文字列の比較(is演算子)

もうわかりますね。これはFalseになります。リストの場合と同じことをやってみましょう。

string_c = string_a

# 文字列の比較
string_a is string_c
文字列の比較(string_aとstring_c)

idを確認しておきましょう。

# idの確認
print('string_aのidは{}です'.format(id(string_a)))
print('string_bのidは{}です'.format(id(string_b)))
print('string_cのidは{}です'.format(id(string_c)))
idの比較(文字列の比較)

このようにstring_aとstring_bはidが異なり、string_aとstring_cはidが同じとなっていますね。なので、「is」演算子による比較結果がstring_aとstring_bではFalse、string_aとstring_chではTrueとなります。

Noneの判定

オブジェクトがNoneであるかを判定したいときがあります。Noneはそれ自体が何もない状態を表すオブジェクトです。オブジェクトの比較なのでis演算子を使いましょう。

スポンサーリンク

まとめ

今回は「==」演算子と「is」演算子を扱いました。同じような意味をもつ演算子ですが、比較の内容が違いましたね。以下にまとめておきます。

  • 「==」演算子は値が同じであることを判定する
  • 「is」演算子はオブジェクトが同一であるかを判定する

コメント

タイトルとURLをコピーしました