【Python】「==」と「is」の違いと使い分けについて【数値,オプジェクトID】

プログラム
スポンサーリンク

はじめに

今回は、Pythonの演算子「==」と「is」の使い分けについて解説します。
Pythonの導入や基本操作が行えることを前提で進めます。

↓前提知識はこちらをご覧ください↓

【Python】導入方法から基本操作について
Pythonは無料で使えるプログラミング言語でA「I開発や作業の自動化」に強いとされてます。導入は公式サイトからダウンロード。DLしたら「IDLE」を起動して動かします。2行以上のブログラムの場合は「.py」ファイルを作成する必要があります。

ちなみに、「!=」と「not is」の違いもこちらの内容で理解できます。

「==」と「is」の違い

「==」と「is」は下記

・「==」 → 値が等しい場合(文字も含む)
・「is」 → オプジェクトIDが等しい場合

この2つが違いです。

オプジェクトIDとは

Pythonは入力した情報、オプジェクトに “ID” という整数の数字が自動で割り当てられます。
これは、オプジェクトのメモリアドレスのようです。(詳細

↓Int / Float / Str / Listなどの全てのオプジェクトにIDはあります。

IDはメモリーに格納された情報なので、PCやPythonの再起動で値が変わります。
あと、IntのIDはPCを再起動まで変わらないようです。

以上が、オプジェクトIDについての解説です。

値が同じでもオプジェクトIDが変わる場面

同じ値でもオプジェクトが変わる場面があります。
試しにいろんな形で「10」の数字を入力。(通常、小数、int変換、リストから取り出し)

すると、同じ「10」でも下記の2つはIDが違う事が分かります

・Intの「10」
・Floatの「10.0」

このように、IntとFloatの “型” が違うと…
値が同じでもオプジェクトIDが変わります。

以上が、値が同じでもオプジェクトIDが変わる場面

「==」の使い道

「==」は 値が等しい場合にTrueを返す処理です。
つまり「10」と「10.0」はTureになります。

if文は、より踏む混んで解説すると…
「if」以降の内容が「Ture」の時に実行する処理です。

なので、if “以降” の内容が「Ture」だと実行されます。

以上が「==」の使い道です。

値が合ってれば、IntとFloatの違いがあってもOKな場合に使えます。

「is」の使い道

「is」は オプジェクトIDが等しいにTrueを返す処理です。
つまり「10」と「10.0」はFalseになります。

そしてif文は、if “以降” の内容が「Talse」だと実行されません。

そして、このプログラムを動かすと… 警告文(Warning)が表示されます。

【警告文】
Warning (from warnings module):
SyntaxWarning: "is" with 'int' literal. Did you mean "=="?

↓↓↓↓↓

【警告内容の要約】
「int」と「Float」は値が同じでも、IDが違う
なので「is」だと ID が不一致になるので動きません。
たぶん「==」を使った方がいいですよと言う意味。

あと、片側をint()やfloat()で変換して揃えると正しく実行されます。
※ただし、数字を使ったif文を実行すると「==」を使った方が良いですよ警告が出ます。

このように「is」は「ID」の一致も含めた “完全な” 一致を確認する上で役立ちます。
以上が「is」の使い道です。

値が合っていても、IntとFloatの違うと実行させないような場面で使えます。

これの使い道は… 謎。

なので、数字は「==」を使わないとエラーが出る。

それ以外は同じと解釈しても良いかもしれません。

まとめ

今回は、Pythonの演算子「==」と「is」の使い分けについて解説しました。

・「==」は値の一致でTureを返す
・「is」はオプジェクトIDの一致でTureを返す
・オプジェクトIDはInt、Float、Str、Listの全てに自動で設定される
・Intの「1」とFloatの「1.0」は値は同じだがオプジェクトIDが変わる
・数字を使ったif文は「==」を使わないと警告文が表示される

また、他にもプログラムについて解説してます。

【Python】__pycache__ファイルを作らない方法
__pycache__はモジュール読み込み時に作られるキャッシュファイルで、プログラムに特殊な処理を入れたり、コマンドプロンプトでpython -Bや「set PYTHONDONTWRITEBYTECODE=1」を使うと作られなくなります。
【Python】コマンドプロンプトでPythonを動かす方法【環境変数,Pathを通す】
Windows OSの場合.pyプログラムはコマンドプロンプトで動かすと「python -」のコマンドが使えます。出力結果がPythonしか出ない場合は、アプリ実行エイリアスをオフにしたり、環境変数を調整してPathを通すなどの調整をします。

ぜひ、こちらもご覧ください。

コメント

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