代入演算子と比較演算子の違いを理解しよう
Pythonを学び始めると、最初のうちによく登場するのが代入演算子 (=)と比較演算子 (==)です。どちらも「イコール」と読むため、慣れないうちは混同してしまうことがあります。あるいは他のプログラミング言語をかじったことがある人でも、無意識に「= はイコール」と思い込んでしまうため、混乱が生じがちです。
そこで本記事では、改めて「= と == の違い」にフォーカスして、初心者の方がつまずかないように解説していきます。Pythonをこれから本格的に学んでいく上で、基本となる理解なので、しっかりとおさえておきましょう。
「=」は変数に値を入れるための演算子
まずはじめに、「=」は代入演算子です。これは右側に書かれた値や式の結果を、左側の変数に格納する、いわば「ものを入れるための箱の口」を指すイメージです。
例えば、次のコードは「変数 x
に 10
を代入する」という意味になります。
x = 10
この時、x
には 10 という数値が保持され、以降のコードでは x
を使って計算をしたり表示させたりできます。
一方で、「= は条件式や比較のためには使えない」という点を覚えておきましょう。もし if x = 10:
のように書いてしまうと、Pythonではシンタックスエラーとなり、「そんな書き方はできない」と怒られます。なぜなら、if
文には比較結果(True
/False
)が必要なのに、「=」はあくまでも代入するための演算子だからです。
「==」は値が等しいかどうかを調べるための演算子
次に登場するのが比較演算子「==」です。これは「左辺と右辺が等しいか」を比較し、等しければ True
、等しくなければ False
を返します。if
文の条件やループの継続判定など、あらゆる場面で重宝する演算子ですね。
x = 10
if x == 10:
print("xは10です")
else:
print("xは10ではありません")
上のコードを実行すると、「xは10です」というメッセージが出力されます。
このように、「==」は両辺の値が同一かをチェックする手段であり、代入の機能は一切持ち合わせていません。
初心者が混乱しやすい例
「=」と「==」の使い方を頭では分かっていても、実際にコードを書くときには思わぬところでミスしてしまうことがあります。典型的には次のようなシチュエーションです。
# うっかり"="と"=="を間違えて書いてしまった例
num = 5
if num = 5:
print("numは5です")
このコードはシンタックスエラーになり、実行することすらできません。Pythonが「if文にはTrue/Falseを求めているのに、代入演算子を使うなんて理解できない」と判断するためです。
一方、C言語や古いバージョンのJavaScriptなどでは、if (num = 5)
と書くと、一見エラーが出ない場合があります。しかし、それは「num に 5 を代入し、その値を式として評価している」だけで、Pythonとは挙動が異なります。こうした差異に慣れている方ほど、思わぬところで混乱しやすいので注意しましょう。
「=」と「==」を混同しないためのヒント
代入演算子「=」と比較演算子「==」を混同しないためには、次のポイントを押さえておくとよいでしょう。
- 変数に値をセットするときは =(代入)
- 値の比較をするときは ==(比較)
- シンタックスエラーが出たら、まず「= と == を間違えていないか」を疑う
- 他言語では「=」を条件式に使えてしまう場合もあるが、Pythonでは不可
- 似た演算子は多いので(
!=
,<=
,>=
など)、1つずつ丁寧に覚える
エディタやIDEの機能を使って構文チェック(リンター)をONにしておくのも有効です。もし誤って if x = 10:
のように書いてしまえば、すぐにシンタックスエラーとして警告が出るはずです。初心者のうちはこうしたサポートを積極的に活用しながら、正しい書き方に慣れていきましょう。
まとめ
ここまで、代入演算子「=」と比較演算子「==」の違いを復習してきました。「= と ==」は見た目こそ似ていますが、役割が全く異なるため、プログラムを書く際には十分気をつける必要があります。
- 「=」:変数へ値を代入するための演算子
- 「==」:両辺が等しいかどうかを比較する演算子
- もし混乱したら、実際に小さなコードを書いて試してみる
- リンターやIDEの警告をこまめにチェックする
プログラムを学習していく過程で最も頻出する基本的な演算子なので、「代入」と「比較」の違いをしっかり理解して、コードを読み書きするときの混乱を減らしましょう。エラーが出てもすぐに恐れず、「どこで=と==を間違えたかな?」とチェックする習慣をつけると、学習がよりスムーズになるはずです。