【空白は何個が正解?】pythonのインデントについて解説

今日は、pythonのインデントについて解説致します。

「インデントって何?」
「pythonのインデントって空白何文字にすればいいの?」
「Tabキーじゃダメなの?」

という疑問をお持ちの方へ向けて、

・インデントとは
・インデントの空白の数について
・タブとスペースについて

を説明いたします。

ぜひ、最後までお付き合いください。

インデントとは

まずはじめに、インデントの意味について説明いたします。

インデントとは、行頭に空白を入れて文字を入れて字下げを行う事を言います。

pythonにおけるインデントは非常に重要です。

なぜなら、pythonは同じ数の空白でインデントされたまとまりを一つのブロックと認識する為です。

以下のif文の例をご確認ください。

# a=b=1   # True
# a=1;b=2 # False

if a == b:
    print('a')
    print('b')
else:
    print('a not equals b')

aとbの値が等しい時、出力結果は以下のようになります。

a
b

a == bがTrueのとき、if文の次の行から始まる「インデントが一つ下がった2行」が実行されています。

これは、インデントを合わせることによって、グループ化をしている為です。

例えばC言語で同様に行う為には、括弧でくくって一つのブロックとしてグループ化をしています。

このように、pythonでは括弧を使わずにインデントで処理をグループ化してまとめています

インデントを合わせないとどうなる?

それでは、以下の処理をご確認ください。

sample.py:

a = 1
b = 2

if a == b:
        print('a')
    print('b')
else:
    print('a not equals b')

このような場合、どうなってしまうでしょう?

実行結果は以下のようになります。

  File "<tokenize>", line 6
    print('b')
    ^
IndentationError: unindent does not match any outer indentation level

Indentionエラーが起きてしまっていますね。

インデントが適切にできていないと、どのように処理をして良いか判定できなくなる為、エラーとなってしまいます。

このように、pythonでは必ずインデントを適切に処理する必要がでてきます。

インデント及び空白の数について

そこで疑問になるのが、「インデントする際に空白の数はいくつにすれば良いか」という点です。

これについてまとめた結果から言うと、「基本的には4文字の所が多いけど、プロジェクトによってまちまち」ということです。

PEP8によると

pythonのコーディング規約であるPEP8によると、以下のように述べられています。

1レベルインデントするごとに、スペースを4つ使いましょう。

pythonの規約なので、基本はここにあると思います。

ただし、

複数行を継続したときにインデントする場合は、4つスペースを使うルールを守らなくても構いません。

との記載もあります。

これは、4つのスペースを使うルールで字下げを繰り返し行うと、書いている途中ですぐに行の右端へ達してしまい、次の行へ折り返してしまう場合があるからです。

それだと読みにくいですよね。

pythonは可読性を重要視している為、やはりそれは避けたい所です。

PEP8に記載されている通り、一貫性にこだわりすぎる必要はありません。

空白の数さえ揃って入ればきちんとブロックとして認識されますので、それぞれのプロジェクトでルールを決めて、その決めたルールで一貫していれば問題はないと言えます。

なお、参考として4文字だと多い場合は2文字とするのが最も多いようです。

タブとスペースについて

インデントを行う際、タブを使うかスペースを使うか悩まれる方がいらっしゃるかと思います。

こちらについても、「一定の設定をしたうえでならどちらでも動作する」ようです。

タブかスペースかを考えるうえで大切なポイントは、以下になります。


【タブが優れている点】

  • タブだとそれぞれの人がタブストップに設定した個数の空白になる為、個人の見やすい好みに対応できる
  • 一回タブを押すだけで字下げができる(入力しやすい)


【スペースが優れている点】

  • 別環境にコードをコピーした場合、タブだとエラーが起きるリスクがある
  • タブストップがない場合、pythonでは空白8文字になってしまう。(すぐ右端に達してしまい折り返しが起きる)
  • 空白は全ての人が同じように見える

以上がタブとスペースの差異になります。

リスクが怖く色々考えるのが嫌という方は、スペースが無難ですね。

いずれにしても大前提としてプロジェクト内でタブとスペースが混在してしまうのは避けてください。

インデントエラーなどのトラブルが発生してしまいます…。

まとめ

いかがでしたでしょうか?

今回の記事では、

・インデントとは
・インデントの空白の数について
・タブとスペースについて

pythonの特徴であるインデントは、時として長所としても短所としても紹介されます。

しかしきちんと認識していればそれほど面倒なものではありません。

この記事を読まれた方が少しでもpythonへ親しみを持てるようになっていただけましたら幸いです。

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

遠藤貴大

1991年生まれ。双子座。
理系大学で認証システムを学んだ後、アプリ開発者となる。
新しく学ぶ人に寄り添った記事を心がけて執筆します。
芸術が好き。いつか猫と暮らすのが夢。

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー