IndentationError・TabErrorの原因と修正方法
概要
PythonでIndentationErrorやTabErrorが発生するのは、コードのインデント(字下げ)に不整合がある場合である。Pythonはインデントでブロック構造を定義するため、スペースとタブの混在や不正なインデントレベルがあると即座にエラーとなる。
エラーメッセージ
File "example.py", line 4
print("hello")
^
IndentationError: unexpected indent
File "example.py", line 3
return x + 1
^
IndentationError: unindent does not match any outer indentation level
File "example.py", line 5
print(result)
^
TabError: inconsistent use of tabs and spaces in indentation
原因
スペースとタブの混在: エディタの設定によってはタブ文字とスペースが混在し、見た目は揃っていてもPythonインタプリタが不整合と判定する。Python 3ではタブとスペースの混在はTabErrorとして明示的に検出される。
不正なインデントレベル: ブロック内のインデント量が前の行と一致しない。特にコピーペーストでコードを持ってきた場合や、異なるエディタで編集した場合に発生しやすい。
ブロック開始後のインデント不足:
if、for、def、classなどの複合文の後にインデントされた本体がない場合。不要なインデント: ブロック外でインデントが入っている行がある場合。
解決策
1. エディタの設定をスペース4つに統一する
ほとんどのPythonスタイルガイド(PEP 8)ではスペース4つを推奨している。エディタの設定を確認し、タブをスペースに変換する。
| |
VS Codeの場合、settings.jsonで以下を設定する:
| |
2. 既存ファイルのタブをスペースに一括変換する
| |
| |
3. 不正なインデントを手動で修正する
| |
4. 空ブロックにはpassを使う
| |
5. Pythonの -tt オプションでタブ混在を検出する
| |
関連エラー
関連エラー
python の他のエラー
この記事は役に立ちましたか?