Pythonの予約語ってなんなのか?基本から予約語の一覧など解説します!
Pythonをブラウザで実行しながら実践的に学ぶ
Pythonの基礎からソフトウェアアーキテクチャ,アルゴリズムなどの応用的な内容まで幅広く学べます。
ブラウザ上で直接Pythonコードを試すことができ、実践的なスキルを身につけることが可能です。
Pythonを学び始めたばかりの人が最初に出会う壁の一つに、「予約語(キーワード)」という言葉があります。 「予約語って何?」「普通の変数名と何が違うの?」と感じたことがある方も多いのではないでしょうか。
私もエンジニア歴10年になりますが、最初のころはよく「SyntaxError: invalid syntax」というエラーを出していました。原因を調べてみると、変数名に予約語を使っていたというシンプルなミス。
でもそのときは「なんでこれがダメなの?」と正直、よくわかっていませんでした。
この記事では、Pythonの予約語とは何か、なぜ使えないのか、そしてどう付き合っていけばいいのかを、初心者でもわかるように丁寧に解説していきます。
サンプルコードや一覧表も交えながら、今日から実践に役立つ知識を身につけましょう。
そもそも予約語とは何か?¶
まずは予約語という言葉の意味から見ていきましょう。
簡単に言うと、Pythonがあらかじめ特別な意味を持たせて予約している単語のことです。
プログラミング言語では、「if」「for」「class」「def」など、特定の単語に特別な役割を与えています。 これらは、Pythonがプログラムを理解するための文法の一部です。 そのため、私たちが勝手に変数名や関数名として使ってしまうと、Pythonが混乱してしまうのです。
たとえばこんなコードを考えてみましょう。
class = "Python"
print(class)
一見、普通の代入文に見えますよね。
でも、これを実行するとこうなります。
SyntaxError: invalid syntax
なぜでしょう?
それは「class」という単語がPythonの文法の一部として予約されているからです。
Pythonは「class」を見た瞬間、「あ、これからクラスを定義するんだな」と思い込みます。
でもその後に=
が出てきて、「あれ?クラス定義じゃないの?」と混乱してしまうわけです。
つまり、「予約語」とはPythonがすでに使う約束をしている言葉のこと。 私たち開発者はそれらを変数名などに使うことができません。
Pythonの予約語一覧¶
では、実際にどんな単語が予約語として扱われているのでしょうか。
Pythonのバージョンによって多少の違いはありますが、ここではPython 3.12時点の予約語を一覧で紹介します。
予約語 | 役割・意味 |
---|---|
False | 偽(ブール値)を表す |
None | 値が存在しないことを表す |
True | 真(ブール値)を表す |
and | 論理演算(かつ) |
as | モジュールの別名を付ける |
assert | デバッグ用の条件チェック |
async | 非同期関数の定義に使用 |
await | 非同期処理の待機 |
break | ループを途中で抜ける |
class | クラスを定義する |
continue | 次のループ処理にスキップする |
def | 関数を定義する |
del | オブジェクトを削除する |
elif | 条件分岐の追加 |
else | 条件分岐の最後の分岐 |
except | 例外処理で使用 |
finally | 例外処理の後処理 |
for | 繰り返し処理 |
from | モジュールのインポート元指定 |
global | グローバル変数を宣言 |
if | 条件分岐 |
import | モジュールを読み込む |
in | 所属チェック(含まれるかどうか) |
is | オブジェクト同一性チェック |
lambda | 無名関数を定義 |
nonlocal | 外側スコープの変数を扱う |
not | 否定(論理NOT) |
or | 論理演算(または) |
pass | 何もしない処理(構文的に必要なとき) |
raise | 例外を発生させる |
return | 関数の戻り値を返す |
try | 例外処理ブロックの開始 |
while | 条件付きループ |
with | コンテキストマネージャを使う |
yield | ジェネレーターを作る |
これらの単語はすべて、Pythonの文法の一部として使われています。 そのため、変数名や関数名として使おうとするとエラーになります。
「変数名に使えない」って、どういうこと?¶
ここで実際の例を見てみましょう。 次のコードを実行してみるとどうなるでしょうか?
if = 10
print(if)
結果はもちろん、次の通りです。
SyntaxError: invalid syntax
Pythonが「if」という単語を見た瞬間、「条件分岐の文法だ」と判断するからです。 つまり、「if = 10」というのは「もし10なら~」という意味に見えてしまい、構文として成立しなくなるのです。
予約語を確認する方法¶
実はPythonには、今使われている予約語を確認する便利な方法があります。 「自分のPython環境ではどんな単語が予約語なのか知りたい」というときに役立ちます。
import keyword
print(keyword.kwlist)
このコードを実行すると、Pythonの予約語リストが一覧で表示されます
keyword
モジュールは標準ライブラリなので、特別なインストールは不要です。
よくある間違いと回避方法¶
予約語にまつわるトラブルは、初心者だけでなく経験者でも意外とやってしまうものです。 私も実務で、一度だけ変数名に「from」を使ってしまい、import文が壊れた経験があります。 こうした問題を防ぐには、変数名を工夫するのがポイントです。
たとえば、「class」という変数を使いたい場合、次のように書き換えるのが良い方法です。
class_ = "Pythonのクラス"
print(class_)
「_(アンダーバー)」をつけることで、Pythonの予約語と区別できます。
アンダーバーについてはこちらの記事で詳しく解説しています。 👉 Pythonのアンダーバーとはなんなのか?
なぜ予約語が存在するのか? その理由を考えてみよう¶
「そもそも、なんでそんな制限があるの?」と疑問に思うかもしれません。 プログラミング言語が予約語を持つ理由は、コンピュータがコードを正しく理解するためです。
Pythonは人間が書いたコードを読み取り、コンピュータが理解できる形に変換します。 そのとき、「if」や「for」といった単語は特別な意味を持っているため、それを変数名に使ってしまうと解析が混乱してしまうのです。
たとえば、人間の言葉で例えるならこんな感じです。
「彼は走る」という文を「彼は」という変数と「走る」というキーワードに分けて理解しているのに、「走る = 5」と書かれたら、「走る」が動詞なのか名前なのか分からなくなる。
Pythonも同じように、「構文としての意味」と「ユーザー定義の名前」を区別する必要があります。 その区別のために、「予約語」というルールがあるのです。
予約語をうっかり避けるための命名のコツ¶
予約語はPythonの構文を支える大切な仕組みですが、私たちはその中で自由に名前をつけてプログラムを書いていきます。 ただし、自由すぎるとエラーの原因になります。
私が実務で意識している命名のコツを紹介します。
1. 意味がはっきりした名前を使う¶
「data」や「value」など、漠然とした名前は避けましょう。 たとえば、「user_data」「file_path」など、具体的に何を指すのかが分かる名前がベストです。
2. 命名規則(スネークケース)を守る¶
Pythonではuser_name
やtotal_price
のように、小文字とアンダースコアを使うのが基本です。
これはPEP8というPythonのコーディング規約にも明記されています。
実際の現場での失敗談¶
ここで少し、私の実体験をお話しします。 以前、社内ツールを作っていたときに「list」という変数名を使ってしまったことがあります。
list = [1, 2, 3]
print(list("123"))
このコードを見て「え、普通にリスト作ってるだけじゃん」と思うかもしれません。 でも実行するとエラーになります。
TypeError: 'list' object is not callable
実は「list」はPythonの組み込み関数でもあり、リストを作るための関数です。
それを上書きしてしまったことで、関数としてのlist()
が使えなくなってしまったんですね。
これも「予約語」ではありませんが、「特別な名前を上書きしてはいけない」という点で非常に似た落とし穴です。 このとき以来、私は変数名を決める前に「その名前、Pythonがすでに使っていないか」を確認する癖がつきました。
予約語と「組み込み関数」の違い¶
ここまで読んで、「予約語」と「list」みたいな組み込み関数の違いって何?と思った方もいるかもしれません。 実はこの2つは似て非なるものです。
種類 | 例 | 上書き可能? | Pythonの構文に使われる? |
---|---|---|---|
予約語 | if, for, class, def | ❌(不可能) | ✅(使われる) |
組み込み関数 | list, len, print, range | ⭕(可能だが非推奨) | ❌(使われない) |
予約語はPythonが文法解析のために予約している単語で、上書きできません。 一方で組み込み関数は上書き可能ですが、すると本来の関数が使えなくなるため注意が必要です。
組み込み関数についてはこちらの記事で詳しく解説しています。 👉 Python組み込み関数とは?初心者でもわかる徹底解説
まとめ¶
この記事では、Pythonの予約語について詳しく解説してきました。 最後にポイントをおさらいしましょう。
- 予約語とは、Pythonが文法解析のために予約している特別な単語のこと
- 「if」「for」「class」などは変数名として使えない
- 予約語リストは
import keyword
で確認できる- 組み込み関数名の上書きにも注意が必要
予約語は制限のように見えますが、実はPythonが私たちのコードを正確に理解するための約束ごとです。 うまく付き合えば、エラーを避けてスムーズにコーディングできるようになります。
エンジニアとして10年やってきた今でも、私はときどき予約語や組み込み関数にひっかかることがあります。 でもそのたびに、「ああ、Pythonはちゃんと見てくれてるな」と思うのです。
予約語を理解することは、Pythonを理解する第一歩です。 今日からは、予約語と仲良くなって、安心してコーディングを楽しんでいきましょう。
ここまでお読みいただきありがとうございました!