LoginSignup
83
57

More than 5 years have passed since last update.

pythonにおける「==」と「is」の違いについて

Last updated at Posted at 2017-09-11

 はじめに

オブジェクト同士を比較する方法として「==」と「is」があるが使い分けがイマイチ分からなかったので違いをまとめてみた。

「==」について

オブジェクト1とオブジェクト2が等価か比較する。等価とは「同じ値を持っているか」と言う意味。

test01.py
object1=100
object2=100

if object1 == object2 :
    print("等価である")
else :
    print("等価ではない")

#出力:等価である

test01.pyではobject1とobject2は同じ値(int型の100)を持っているためif文はTrueと評価。

test02.py
object1=100    #int型の100
object2="100"  #str型の100

if object1 == object2 :
    print("等価")
else :
    print("等価ではない")

#出力:等価ではない

test02.pyでは「int型の100」と「str型の100」を比較しているためif文はFalseと評価。

「is」について

「is」は比較したオブジェクトが「同一のオブジェクトかどうか」を調べる。

test3.py
object1=[1,2,3]
object2=[1,2,3]

print(object1 is object2)
print(object1 is object1)

#出力
#False
#True

オブジェクトを生成するとそのオブジェクトにid番号(ユニークな番号)が振られる。「is」はこのidを比較して同一のオブジェクトかを調べている。id番号はidメソッドで調べられる。

test04.py
object1=[1,2,3]
object2=[1,2,3]

print(id(object1))    #id()でそのオブジェクトのid番号調べる
print(id(object2))

print(object1 is object2)
print(object1 is object1)

#出力
#4488767496    (object1のid番号)
#4488768392    (object2のid番号)
#False
#True

※id番号は環境によって異なる。

まとめ

「==」は比較されたオブジェクトが等価か調べる。
「is」は比較されたオブジェクトのidが等価か調べる。

83
57
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
83
57