記事内にはプロモーションが含まれています

【Pythonの予約語一覧】予約語とは何か?意味や取得・確認する方法

【Pythonの予約語一覧】予約語とは何か?意味や取得・確認する方法 プログラミング言語

Pythonでプログラミングをしていて、変数名を決めただけなのにエラーが出てしまった経験はないでしょうか。

もしかすると、それは「予約語」を使っていたことが原因かもしれません。

予約語とは、Pythonがあらかじめ特別な意味を持たせている単語のことで、変数名や関数名として使うことができません。

この記事では、Pythonの予約語一覧(意味付き)を紹介し、プログラムで簡単に予約語を確認する方法や、回避するための命名規則について詳しく解説します。

予約語をマスターして、無駄なエラーに悩まされないスムーズなコーディングを目指しましょう。

【著者プロフィール&本記事の信頼性】
プロフィール
  • 著者は元エンジニア
  • 大手プログラミングスクールのWebディレクター兼 ライターを経験
  • 自らも地元密着型のプログラミングスクールを運営
プロフィール詳細はコチラ
日本最大級の比較サイトで「4年連続人気NO.1」!
SNSでの評判の良さも圧倒的なプログラミングスクール『RUNTEQ(ランテック)』!
【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つ付けることが定められています。

【予約語を回避する際の例】

  • classclass_
  • fromfrom_
  • globalglobal_
# 予約語 class は使えないため SyntaxError になる
# class = "DesignPattern" 

# 末尾にアンダースコアを付けて回避する(推奨)
class_ = "DesignPattern"
print(class_)

無理に単語を省略したり(例: cls)、意味の異なる単語に変えたりするよりも、アンダースコアを付ける方が「本来その単語を使いたかった意図」が読み手に伝わりやすく、可読性を保つことができます。

初心者がPythonのスキルを効率的に学ぶには

初心者の方がPythonのスキルを効率的に習得するには、プログラミングスクールの活用が最も近道です。

スクールでスキルを高めることにより、今の仕事に活かしたり、副業として高単価な案件を受注できたりするだけでなく、Pythonエンジニアとして転職することも可能になります。

Pythonエンジニアは需要が非常に高いため、それに比例して年収も高くなる傾向にあります。
「今よりも年収を上げたい」「将来性の高い職種であるエンジニアへ転職したい」といった気持ちが強い場合は、プログラミングスクールでPythonの専門スキルを習得しつつ、ポートフォリオ支援や転職支援を受けてエンジニアへ転職する、という道を目指すのもよいでしょう。

なお、「Pythonに強く、受講生からの評判も良いプログラミングスクール」には、以下のようなところがあります。

その他、以下の記事でもPythonのおすすめスクールをまとめていますので、興味のある方は是非参考にしてください。