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

50種類以上のIT教材を無料で使える!
0円から学習できるオンラインITスクール「侍テラコヤ」
→さっそく登録する

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

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

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

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

を説明いたします。

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

なお、Pythonの記事については、こちらにまとめています。

インデントとは

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

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

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文字になってしまう。(すぐ右端に達してしまい折り返しが起きる)
  • 空白は全ての人が同じように見える

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

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

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

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


【なかなかエラーが解決できない…そんな悩みを解決します!】

登録無料で始められるプログラミングスクール「侍テラコヤ」

・回答率100%のQ&A掲示板でエラーを解決!
現役エンジニアとのオンライン相談で悩みを解決!
・50種類以上の教材で複数言語を習得!

侍テラコヤについて詳しく見る

まとめ

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

今回の記事では、

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

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

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

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

プログラミング学習中、
誰かへ相談したいことはありませんか?

SAMURAI TERAKOYA

プログラミングはエラーの連続。作業を進めるなかで誰かに教えてほしい場面は多いですよね。

そんな悩みを解決できるのが、侍テラコヤです。登録無料で始められて、現役エンジニアとオンラインで相談できるほか、回答率100%のQA掲示版でプログラミングに関する悩みを解決します!

気になる方はぜひ詳細をご覧ください。

→侍テラコヤの詳細をみる

Writer

遠藤貴大

株式会社SAMURAI

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

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI TERAKOYA

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close