スライドショー

【空白は何個が正解?】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へ親しみを持てるようになっていただけましたら幸いです。

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

遠藤貴大

遠藤貴大

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