EASYBOT GUIDE
Python IndentationErrorの原因と直し方|タブとスペースを確認
PythonのIndentationErrorやTabErrorが発生する原因を、インデント、タブとスペース、エディター設定から解決する方法を解説します。
IndentationErrorはPythonコードの字下げが文法上正しくない時に発生します。Pythonではインデントが処理ブロックを表すため、見た目が近くてもタブとスペースが混在すると実行できません。
エラー行と直前のブロック
表示された行だけでなく、その直前にあるif、for、defなどのブロック開始と終了を確認します。エラーの行番号は問題箇所の次の行を指す場合もあります。
- Tracebackの最後にあるファイル名と行番号を確認する
- 直前のコロンとブロック構造を確認する
- 同じ階層の行が同じ字下げか比較する
タブとスペースを統一
タブ一つとスペース数個は画面上で同じに見えることがあります。エディターで空白文字を表示し、ファイル全体をスペース4個など一つの規則に統一します。
- エディターで不可視文字を表示する
- タブをスペースへ変換する
- 混在箇所をファイル全体で検索する
エディター設定
保存時にタブへ変換される設定や、自動インデントが原因で別の行だけ字下げが変わることがあります。プロジェクトごとに.editorconfigなどで設定を共有します。
- Tab SizeとInsert Spacesを確認する
- .editorconfigの設定を確認する
- 変更後に保存して実際のファイルを再確認する
再発を防ぐ
短い関数単位で実行し、構文エラーを早めに見つけます。コード整形ツールを使う場合は、チームやプロジェクトでルールを統一します。
- コンパイル確認にpython -m py_compileを使う
- フォーマッターの設定を固定する
- コピーしたコードの字下げを確認する