Pythonでプログラミングをしていて、変数名を決めただけなのにエラーが出てしまった経験はないでしょうか。
もしかすると、それは「予約語」を使っていたことが原因かもしれません。
予約語とは、Pythonがあらかじめ特別な意味を持たせている単語のことで、変数名や関数名として使うことができません。
この記事では、Pythonの予約語一覧(意味付き)を紹介し、プログラムで簡単に予約語を確認する方法や、回避するための命名規則について詳しく解説します。
予約語をマスターして、無駄なエラーに悩まされないスムーズなコーディングを目指しましょう。
SNSでの評判の良さも圧倒的なプログラミングスクール『RUNTEQ(ランテック)』!

✅受講生からの評判が驚くほど良い
✅学習はハードだが未経験とは思えないほど高いスキルが身に付く
✅挫折させない万全なサポート体制が用意されている
✅採用面接で担当者に刺さるレベルの高い「ポートフォリオ」を作成できる
✅給付金を使えば実質約13万円という格安料金で受講できる

エンジニア転職を目指すならRUNTEQ一択です。
\勧誘行為は一切なし! 相談だけでもOK! /
予約語とは?
予約語(キーワード)とは、Python言語の文法上、すでに特別な意味や役割が割り当てられている単語のことです。
これらの単語は、開発者が変数名、関数名、クラス名などの識別子として使用することはできません。
もし予約語を識別子として使おうとすると、Pythonインタプリタは文法エラーを発生させ、プログラムは実行前に停止します。
例えば、「if」や「for」などは制御構文に使われる代表的な予約語です。
これらはプログラムの構造を決定づける重要な要素であるため、ユーザーが勝手に変数などで再定義できないようになっています。
予約語の意味や役割
予約語にはそれぞれ独自の役割があります。
論理値を表す「True」「False」や、条件分岐を行う「if」「else」、ループ処理を行う「for」「while」、関数を定義する「def」、クラスを定義する「class」などが該当します。
これらの単語を見ただけで、Pythonがどのような処理を行おうとしているのかを判別するための標識のような役割を果たしています。
Pythonの予約語はいくつあるのか
Pythonの予約語の数は、バージョンによって多少の増減がありますが、Python 3系の最新バージョンでは35個です。
予約語の増減の例として、Python 3.7以降では非同期処理に使われる「async」と「await」が正式に予約語に追加されました。
他のプログラミング言語と比較すると、Pythonの予約語の数は比較的少ない部類に入ります。
これはPythonが「シンプルで読みやすいコード」を設計思想としているためです。
少ない予約語で多くの機能を表現できるように設計されているのです。
予約語と組み込み関数の違い
Pythonの初心者が、予約語と混同しやすい概念に「組み込み関数」があります。
予約語と組み込み関数は、どちらもPythonにあらかじめ用意されているものですが、その扱いは大きく異なります。
| 予約語 | 組み込み関数 | |
|---|---|---|
| 例 | if, for, class, return |
print, len, list, int |
| 変数名としての利用 | 不可(SyntaxErrorが発生) | 可(ただし推奨されない) |
| 役割 | 文法そのものを構成する | 便利な機能を提供する |
例えば、print は画面に出力するための組み込み関数ですが、print = 10 と記述してもエラーにはなりません。
しかし、これを行うと print という名前が整数 10 で上書きされてしまい、そのプログラム内で本来の出力機能が使えなくなってしまいます。
一方、予約語である if = 10 は即座に文法エラーとなります。
Pythonの予約語一覧
Python 3系における主要な予約語の一覧と、それぞれの簡単な意味を一覧形式で表にまとめました。
以下のキーワードは、変数名として使用できません。
| 予約語 | 意味・役割 |
|---|---|
| False | 真偽値の「偽」を表す |
| None | 値が存在しないことを表す |
| True | 真偽値の「真」を表す |
| and | 論理積(〜かつ〜) |
| as | エイリアス(別名)をつける、インポートやwith文で使用 |
| assert | デバッグ用の条件チェック(アサーション) |
| async | 非同期処理を行う関数(コルーチン)を定義する |
| await | 非同期処理の完了を待つ |
| break | ループ処理を中断して抜ける |
| class | クラスを定義する |
| continue | ループ処理の残りをスキップし、次の繰り返しへ進む |
| def | 関数を定義する |
| del | オブジェクトや要素を削除する |
| elif | 条件分岐で「そうではなく、もし〜なら」(else if) |
| else | 条件分岐で「それ以外なら」、またはループ完了時の処理 |
| except | 例外処理でエラーを捕捉する |
| finally | 例外処理で必ず実行されるブロックを指定する |
| for | シーケンス(リストなど)に対するループ処理 |
| from | モジュールの一部をインポートする |
| global | グローバル変数を宣言する |
| if | 条件分岐を行う |
| import | モジュールを読み込む |
| in | シーケンスに含まれているか確認する、またはfor文で使用 |
| is | オブジェクトが同一かどうか判定する |
| lambda | 無名関数(ラムダ式)を作成する |
| nonlocal | 外側のスコープ(グローバル以外)の変数を参照する |
| not | 論理否定(〜ではない) |
| or | 論理和(〜または〜) |
| pass | 何もしない(構文上必要な場所に置く) |
| raise | 例外を意図的に発生させる |
| return | 関数から値を返す |
| try | 例外処理の監視ブロックを開始する |
| while | 条件が真の間、ループ処理を行う |
| with | リソース管理(ファイルオープンなど)を簡潔に記述する |
| yield | ジェネレータ関数から値を一つ返す |
※Pythonのバージョンにより、一部異なる場合があります。
Pythonで予約語を取得する方法
現在使用しているPython環境における正確な予約語リストを取得するには、標準ライブラリの keyword モジュールを使用します。
このモジュールを使うことで、暗記していなくてもプログラム的に一覧を出力することが可能です。
以下は、予約語の一覧を取得して表示するサンプルコードです。
import keyword
# 予約語の一覧を取得して表示
print(keyword.kwlist)
実行結果の例は以下の通りです。
['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', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
keyword.kwlist はリスト形式で予約語を保持しています。
len() 関数と組み合わせることで、予約語の総数を確認することもできます。
import keyword
# 予約語の数を確認
print(len(keyword.kwlist))
Pythonで予約語を確認する方法
ある特定の単語が予約語かどうかをピンポイントで確認したい場合は、同じく keyword モジュールにある iskeyword() 関数を使用します。
この関数は、引数に渡した文字列が予約語であれば True を、そうでなければ False を返します。
変数名を決める際に「この単語は使っても大丈夫だろうか?」と迷った時に非常に便利です。
以下が、予約語かどうか確認する際のサンプルコードです。
import keyword
# "class" が予約語か確認
print(f"class は予約語ですか?: {keyword.iskeyword('class')}")
# "print" が予約語か確認
print(f"print は予約語ですか?: {keyword.iskeyword('print')}")
# "my_var" が予約語か確認
print(f"my_var は予約語ですか?: {keyword.iskeyword('my_var')}")
実行結果は以下の通りです。
class は予約語ですか?: True
print は予約語ですか?: False
my_var は予約語ですか?: False
この結果からわかるように、class は予約語であるため変数名には使えません。
一方、print は組み込み関数ですが予約語ではないため False が返されます。(ただし、前述の通り変数名としての使用は避けるべきです)
Pythonで予約語を回避する方法
開発を行っていると、どうしても予約語と同じ意味の単語を変数名として使いたい場面が出てきます。
例えば、CSSのクラス名を扱う変数として class を使いたい場合などです。
Pythonのコーディング規約(PEP 8)では、予約語との衝突を避けるための公式な推奨方法として、単語の末尾にアンダースコア(_)を1つ付けることが定められています。
【予約語を回避する際の例】
class→class_from→from_global→global_
# 予約語 class は使えないため SyntaxError になる
# class = "DesignPattern"
# 末尾にアンダースコアを付けて回避する(推奨)
class_ = "DesignPattern"
print(class_)
無理に単語を省略したり(例: cls)、意味の異なる単語に変えたりするよりも、アンダースコアを付ける方が「本来その単語を使いたかった意図」が読み手に伝わりやすく、可読性を保つことができます。
初心者がPythonのスキルを効率的に学ぶには
初心者の方がPythonのスキルを効率的に習得するには、プログラミングスクールの活用が最も近道です。
スクールでスキルを高めることにより、今の仕事に活かしたり、副業として高単価な案件を受注できたりするだけでなく、Pythonエンジニアとして転職することも可能になります。
Pythonエンジニアは需要が非常に高いため、それに比例して年収も高くなる傾向にあります。
「今よりも年収を上げたい」「将来性の高い職種であるエンジニアへ転職したい」といった気持ちが強い場合は、プログラミングスクールでPythonの専門スキルを習得しつつ、ポートフォリオ支援や転職支援を受けてエンジニアへ転職する、という道を目指すのもよいでしょう。
なお、「Pythonに強く、受講生からの評判も良いプログラミングスクール」には、以下のようなところがあります。
- デイトラ
(※格安)
- キカガク
(※専門的)
- Aidemy Premium
(※受講コースが豊富)
その他、以下の記事でもPythonのおすすめスクールをまとめていますので、興味のある方は是非参考にしてください。




