【インデントはスペース?それともタブを何個?】Pythonにおけるインデントのルールについて
- Pythonでのインデントで使用する空白は2つか4つ?
- タブを使用したらいいのか?
Pythonでコードを書いていて、そんな悩みを思ったことはありませんか?
先日、Pythonを知り合いに教えたので、皆さんも同じ悩みがあるかもしれませんので、本記事で紹介させて頂きます。
Pythonの規約をまとめたサイトであるpep8-jaでは、Pythonで使用するインデントはスペースは4つにしようというルールがあります。
今まで、スペース2つにしていた方は、この機会にスペース4つにしましょう。
自分はタブを使用しているという方は、ツールのデフォルト設定をすぐに変更しましょう。
Contents
Pythonのインデントとは何か?
Pythonのインデントとは、行の先頭にある空白のことです。
因みに英語辞書でのインデント(indent)の意味は、以下の意味があります。
IT用語では、英語がよく使われるので、一つづつ覚えていくといいですよ。
分からない場合は、辞書で調べるのもおススメです。
・他の行より下げて印刷する
・(…に)くぼみを作る、
・(…を)へこませる
Pythonのインデントルールを明記しているPEP8によると空白は4文字
PEP8ではインデントは
“1レベルインデントするごとに、スペースを4つ使いましょう。”
“スペースが好ましいインデントの方法です。タブを使うのは、既にタブでインデントされているコードと一貫性を保つためだけです。
Python 3 では、インデントにタブとスペースを混ぜることを禁止しています。”
参照:pep8-ja
Pythonではインデントを合わせないとどうなる?エラーになるのか?
Pythonではインデントが空白1文字でも、2文字でもエラー発生しません。
しかしグループごとに先頭文字を合わせる必要があります。
空白4文字で、正常に動作する書き方
#インデントを合わせた書き方 indent="ok" if indent=="ok": print("空白4個") print("だとエラー発生しない") #出力結果 ##空白4個 ##だとエラー発生しない
空白8文字で、正常に動作する書き方
#インデントを合わせた書き方 indent="ok" if indent=="ok": print("空白8個") print("これもエラー発生しない") #出力結果 ##空白8個 ##これもエラー発生しない
エラーとなる書き方
#インデントの間違った書き方 indent="ERROR" if indent=="ERROR": print("空白8個") print("この行は空白4文字。グループ異なるので、エラー発生") #出力結果 ##IndentationError: unindent does not match any outer indentation level
となります。
そのため、インデントを統一した書き方をする必要があります。
【まとめ】Pythonにおけるインデントはスペース4文字とする。
今まで、Pythonのインデントに迷っていた方は、今後はインデントはスペース4文字にしましょう。
PEP8でも規定されている通り、文字数に規定はありませんが、ほかの方とも開発を行う場合は、開発者によってインデントが異なると後々の運用でインデントが異なりソースが見にくい状況が発生してしまします。
またインデントはグループ毎に先頭行の空白文字数を統一をしないとエラーとなります。
そのため、グループ単位では先頭行を統一しましょう。