【Python】予約語一覧と確認方法:変数名で使えない単語完全ガイド

フリーランスボード

20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード

ITプロパートナーズ

週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ

Midworks 10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks

Pythonでプログラミングをしていると、「SyntaxError: invalid syntax」というエラーに遭遇することがあります。その原因の一つが、予約語を変数名や関数名に使ってしまうことです。

予約語(キーワード)とは、Pythonの言語仕様で特別な意味を持つ単語のことで、プログラムの構造や制御フローを定義するために使われます。これらの単語は、変数名、関数名、クラス名などの識別子として使用することができません。

予約語を理解することは、エラーを未然に防ぎ、可読性の高いコードを書くための基礎となります。本記事では、Pythonのすべての予約語を網羅的に解説し、実務で役立つ確認方法や回避テクニックをご紹介します。

Pythonの予約語完全一覧

2025年現在、Python 3.xには以下の35個の予約語が存在します。これらはすべて小文字または大文字で記述されており、大文字と小文字が区別されます。

制御構造に関する予約語

条件分岐

  • if: 条件分岐の開始を示します
  • elif: else ifの略で、複数の条件を順に評価します
  • else: 条件が満たされない場合の処理を定義します

ループ処理

  • for: イテラブルオブジェクトの各要素に対して繰り返し処理を実行します
  • while: 条件がTrueの間、処理を繰り返します
  • break: ループを強制的に終了します
  • continue: 現在の反復をスキップし、次の反復に進みます

関数・クラス定義に関する予約語

  • def: 関数を定義します
  • class: クラスを定義します
  • return: 関数から値を返します
  • yield: ジェネレータ関数で値を生成します
  • lambda: 無名関数(ラムダ式)を作成します

例外処理に関する予約語

  • try: 例外が発生する可能性のあるコードブロックを開始します
  • except: 特定の例外をキャッチして処理します
  • finally: 例外の有無に関わらず必ず実行されるコードを定義します
  • raise: 例外を明示的に発生させます
  • assert: 条件が偽の場合にAssertionErrorを発生させます

論理演算・比較に関する予約語

  • and: 論理積(AND演算)を表します
  • or: 論理和(OR演算)を表します
  • not: 論理否定(NOT演算)を表します
  • is: オブジェクトの同一性を比較します
  • in: メンバーシップテストを行います

定数・特殊値

  • True: 真理値の真を表します
  • False: 真理値の偽を表します
  • None: 値が存在しないことを表す特殊な定数です

モジュール・スコープに関する予約語

  • import: モジュールをインポートします
  • from: 特定のモジュールから要素をインポートします
  • as: インポート時や例外処理時に別名を付けます
  • global: グローバルスコープの変数を参照・変更します
  • nonlocal: 外側の関数スコープの変数を参照・変更します

その他の重要な予約語

  • with: コンテキストマネージャを使用してリソース管理を行います
  • pass: 何も実行しないプレースホルダーです
  • del: オブジェクトへの参照を削除します
  • async: 非同期関数を定義します(Python 3.5以降)
  • await: 非同期処理の完了を待ちます(Python 3.5以降)

予約語を確認する3つの方法

方法1:keywordモジュールを使う(推奨)

Pythonには予約語を確認するための標準ライブラリ「keyword」が用意されています。これが最も確実で簡単な方法です。

import keyword

# すべての予約語を表示
print(keyword.kwlist)

# 特定の単語が予約語かチェック
print(keyword.iskeyword('if'))      # True
print(keyword.iskeyword('print'))   # False

このモジュールを使えば、Pythonのバージョンごとに異なる予約語のリストを正確に取得できます。特に、Python 3.5で追加されたasyncawaitなどの新しい予約語も自動的に含まれます。

方法2:対話型インタープリタでhelpを使う

Python対話モードで直接確認することも可能です。

>>> help('keywords')

この方法は、ドキュメントと一緒に予約語の説明も確認できるため、学習段階では特に有用です。

方法3:実際にエラーを確認する

予約語を変数名として使おうとすると、即座にSyntaxErrorが発生します。

class = "Python"  # SyntaxError: invalid syntax

ただし、この方法は事後対応となるため、開発効率の観点からは推奨されません。コーディング前に確認する習慣をつけましょう。

予約語を変数名に使うとどうなるか

予約語を識別子として使用しようとすると、Pythonは構文エラーを発生させます。これは言語仕様による制限であり、回避する方法はありません。

よくあるエラーケース

ケース1:制御構造の予約語を使用

for = 10  # SyntaxError

このエラーは、Pythonがforをループの開始として解釈しようとするため発生します。変数の代入文として認識されません。

ケース2:論理演算子を使用

and = True  # SyntaxError

論理演算子は式の中で特別な役割を持つため、変数名として使用できません。

ケース3:データ型と誤解しやすいもの

class = "Math101"  # SyntaxError

classは予約語であり、クラス定義にのみ使用できます。教室やクラスを表す変数名としては使えません。

エラーメッセージの読み方

予約語を使用した場合、通常は以下のようなエラーメッセージが表示されます。

SyntaxError: invalid syntax

エラーの箇所には記号(^や矢印)で示されることが多く、どの予約語が問題となっているか特定できます。エディタやIDEを使用している場合は、入力時点で色が変わったり警告が表示されたりすることもあります。

予約語と混同しやすい組み込み関数・定数

初心者が特に注意すべきなのは、予約語ではないが重要な役割を持つ「組み込み関数」や「組み込み定数」との違いです。

組み込み関数(上書き可能だが非推奨)

以下は予約語ではないため、技術的には変数名として使用できますが、強く非推奨です。

  • print: 標準出力に出力する関数
  • input: ユーザー入力を受け取る関数
  • len: オブジェクトの長さを返す関数
  • range: 連続した整数を生成する関数
  • type: オブジェクトの型を返す関数
  • int, str, float, list, dict, set, tuple: 型変換や型コンストラクタ
  • open: ファイルを開く関数
  • max, min, sum: 数値計算関連の関数

上書きするとどうなるか

# 悪い例:組み込み関数を上書き
list = [1, 2, 3]  # これは可能だが...
new_list = list([4, 5, 6])  # TypeError: 'list' object is not callable

この例では、listという変数を作ってしまったため、組み込みのlist()関数が使えなくなります。このような問題は、コードの別の部分で予期せぬエラーを引き起こし、デバッグが困難になります。

見分け方のポイント

  • 予約語: Python構文の一部。keyword.iskeyword()で確認可能
  • 組み込み関数: __builtins__モジュールに含まれる関数。技術的には上書き可能
  • 一般的な変数名: ユーザーが自由に定義できる識別子

IDEの多くは、予約語を特定の色(通常は紫や青)で、組み込み関数を別の色で表示してくれます。この視覚的なヒントを活用しましょう。

安全な変数名を付けるベストプラクティス

予約語を避けつつ意図を伝える命名テクニック

予約語に近い意味の変数名が必要な場合、以下のような代替案があります。

1. アンダースコアを末尾に付ける

class_ = "Math101"
type_ = "integer"

PEP 8(Pythonのスタイルガイド)でも認められている方法で、予約語との衝突を避けながら本来の意図を保てます。

2. より具体的な名前を使う

# "class"の代わり
course_name = "Math101"
classroom = "A-201"
student_class = "3年B組"

# "type"の代わり
data_type = "integer"
category = "electronics"

# "for"の代わり
duration = 10
iteration_count = 100

3. 複合語を使う

is_true = True  # "true"だけでなく
has_passed = False  # "pass"だけでなく
return_value = 42  # "return"だけでなく

変数名の一般的なルール

予約語以外にも、良い変数名を付けるための原則があります。

  • 説明的であること: xよりstudent_countの方が理解しやすい
  • 一貫性: プロジェクト全体で命名規則を統一する
  • 長すぎない: this_is_a_very_long_variable_name_for_counting_studentsは避ける
  • snake_caseを使う: Python では小文字とアンダースコアを使うのが標準
  • 略語は慎重に: numcntよりもnumbercountが明確

バージョンによる予約語の違い

Pythonのバージョンアップに伴い、予約語が追加されることがあります。これは後方互換性に影響を与える重要な変更です。

Python 3.5での追加

  • async: 非同期関数を定義
  • await: 非同期処理の完了を待機

これらは非同期プログラミングをネイティブサポートするために追加されました。Python 3.4以前のコードでこれらを変数名として使っていた場合、Python 3.5以降では動作しません。

Python 2との違い

Python 2からPython 3への移行時に、いくつかの変更がありました。

  • print: Python 2では予約語でしたが、Python 3では関数になりました
  • exec: Python 2では予約語でしたが、Python 3では関数になりました
  • nonlocal: Python 3で新たに追加された予約語です

これらの違いは、Python 2のコードをPython 3に移植する際に注意が必要です。

将来の変更への備え

Pythonは進化し続ける言語です。将来的に新しい予約語が追加される可能性もあります。そのため、keyword.kwlistを使って動的に予約語をチェックする習慣をつけることが、保守性の高いコードを書くコツです。

まとめ:予約語を正しく理解して効率的なコーディングを

Pythonの予約語は、言語の構造を形作る重要な要素です。これらを正しく理解することで、以下のメリットが得られます。

  1. エラーの予防: 予約語を変数名に使わないことで、構文エラーを未然に防げます
  2. 可読性の向上: 予約語と区別される適切な変数名により、コードが読みやすくなります
  3. 保守性の確保: 将来のバージョンアップにも対応しやすいコードを書けます
  4. 開発効率の向上: デバッグ時間を減らし、本質的な開発に集中できます

予約語の確認にはkeywordモジュールを活用し、変数名には意図が明確に伝わる名前を選びましょう。また、予約語ではないものの、組み込み関数や定数を上書きすることも避けるべきです。

コーディング中に「この単語は使えるのか?」と迷ったら、まずkeyword.iskeyword()でチェックする習慣をつけることをお勧めします。この小さな習慣が、長期的には大きな時間の節約につながります。

Pythonの予約語を正しく理解し、適切な変数名を選ぶことで、より品質の高いコードを書いていきましょう。

「らくらくPython塾」が切り開く「呪文コーディング」とは?

■初心者歓迎「AI駆動開発/生成AIエンジニアコース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

格安のプログラミングスクールといえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
対面型でより早くスキル獲得、月額2万円のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<オンライン無料>ゼロから始めるPython爆速講座

フリーランスボード

20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード

ITプロパートナーズ

週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ

Midworks 10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks