まず結論

= は「値を入れる」ための記号です。
== は「同じかどうかを比べる」ための記号です。

score = 100
print(score == 100)

この例では、1行目で score100 を入れています。
2行目では、score100 と同じかどうかを調べています。

こんなときに読む記事です

次のようなところで止まった人向けです。

  • if x = 3: と書いたらエラーになった
  • === の使い分けが毎回あやふやになる
  • 数学の「イコール」とPythonの = が同じに見えて混乱する

Pythonでは、数学で見慣れた記号でも意味が少し変わります。ここでは「代入」と「比較」を分けて考えます。

よくある勘違い

初心者がよく書いてしまうのが、この形です。

if score = 100:
    print("満点です")

これはエラーになります。
if の中では「条件」を書きたいので、代入の = ではなく比較の == を使います。

if score == 100:
    print("満点です")

エラー文ではどう見える?

if score = 100: のように書くと、環境によっては SyntaxError が出ます。

SyntaxError: invalid syntax

エラー文だけ見ると難しく感じますが、この場合は「ifの条件なのに、比較ではなく代入を書いている」ことが原因です。

図で考えるなら

= は、名前のついた箱に値を入れる動きです。

name = "moco"

== は、2つのものを並べて「同じかな?」と見比べる動きです。

name == "moco"

ここだけ覚えればOK

コードを書いていて迷ったら、こう考えてください。

  • 値を保存したいなら =
  • 同じか確認したいなら ==
  • if の条件で比べたいなら ==

次に確認するとよいこと

=== が分かると、変数とif文が読みやすくなります。

  • 変数は「値に名前をつける」仕組み
  • if文は「条件が本当かどうか」で道を分ける仕組み