Python空白?タブ?Pythonにおけるインデント論争に終止符を打つかい2019/3/62019/3/7Pythonにおけるインデントについて...スペースは4つなのか、2つなのかタブなのか、スペースなのかハードタブとソフトタブの違いはっきりわかってないぞなど、Pythonのインデント論争は絶えませんよね。結局どうすれば良いのと思ってる人も多いのではないでしょうか?はじめまして、長いことPythonを触ってきたかいです。本日は、Pythonの長きに渡るインデント論争をに終止符を打つべく、記事を作成しました。まとめPythonにおけるインデントの意味まずは、最初にPythonにおいてインデントがどのような意味を持っているのかをしっかりと抑えておきましょう。PythonでインデントはブロックであるPythonにおいてインデントは、ブロックまたはスコープです。言われてもイメージしずらいですよね。変数の適応される範囲をその変数のスコープといいましたよね。関数の中で定義した変数は他の関数でそのままでは使えませんよね。スコープの適用される塊をブロックと言ったりしますが、つまりPythonのインデントはこのブロックを表しているのです。endなどでブロックを囲んだりしますが、Pythonでは全てインデントで管理します。インデントがずれるとエラーになる前述したように当然ですが、このインデントがずれるとエラーになります。適切なインデントをつけなかったり、不要なインデントをつけてはいけません。b)上記のような書き方はPythonでは全てエラーになります。インデントはスペース4つか2つかインデントが大切なのは分かったけどスペース何個分のインデントが良いの?という疑問もありますよね。これに関しては、人やプロジェクトによっても違って2つが良いという人もいれば4つが良いという人もいます。結論4つにしておこうしかし、初学者の方は特別な理由がない限りインデントはスペース換算で4つ分にしておきましょう。理由は、世界中のPythonのコードで4つのコードが格段に多いからです。プロジェクトが2つであったり、いや自分は2つがやりやすい!という人はそちらでも問題ありません。スペースの数が統一されないとエラーになるただ、ここで気をつけて欲しいのは一度インデントの数を決めたらそのコードの中では統一するようにしましょう。print('hello')test()このように、インデントを2つに統一するのは良いですが、以下のように2つと4つを織り交ぜるとエラーとなります。indentインデントのタイプさて、次はインデントのタイプについてみていきます。インデントはタブで行うこととスペースで行うことができます。タブタブとは\tで表される改行の仕方です。タブには以下のようなメリット、デメリットがあります。半角空白を複数で1インデントとすることにより、少ない文字数で表現でき、ファイルサイズが小さくなるインデントが正しく構成されているか一目でわかるタブキーを叩けば終わる【デメリット】yamlなどではタブによるインデントは認識されないタブはすべて「半角スペース8文字」と認識して動くため、意図せずインデントが崩れることがあるタブは環境に依存することがあるスペーススペースはみなさん知っての通りのあのスペースです。メリットとデメリットをまとめてみます。【メリット】Gitなどで崩れることがない環境依存などない【デメリット】スペースを連打する必要があるタブよりデータ量が多いスペースはこのようになっていますね。ちなみに、世界的に多いのはスペース派のようです。どちらでも良いですが、絶対に混在しないようにしましょう。タブのタイプタブとスペースの違いは分かっていただけたと思うのですが、実はエディタの設定などによってタブはタブでもハードタブとソフトタブというものがあります。ハードタブハードタブとは、イメージしているタブそのもので\tによるタブなのですが、後述するソフトタブという概念があるため、対照的にハードタブと名付けられました。一般的なタブと思っていただければ問題ありません。ソフトタブソフトタブとは、任意のスペース数を使ってタブを表現します。スペースを使ったインデントをタブと呼ぶのは違和感のある人もいるかもしれませんが、tabキーを押すことで”\t"ではなく、スペースの塊を挿入でき、それをインデントとします。ちなみに筆者はソフトタブをよく用いています。注意点ソフトタブとは、スペースの塊であるため、先述したとおりソフトタブとハードタブを混在したコードというのも許されません。以下のコードをみてください。print('hello')test()一見普通に動作しそうですよね。indentation以下の画像をみてください。このように、スペースとタブ、つまりソフトタブとハードタブが混在しているのが分かりますね。エディタでソフトタブとハードタブの切り替えが可能ですが、これをしっかり理解しておかないと、ネットからコピペしたコードに自分のコードを書き足したら実行できなくなったという現象がおき初心者の方ははまりがちなポイントとなっています。そのため、自分が何気なしに行なっているインデントもタブなのかスペースなのかtabキーを叩いているからと言ってハードタブなのかソフトタブなのかなどをしっかり理解しておくことが大切です。まとめいかがでしたでしょうか?Pythonにおけるインデントの意味ということから、タブとスペースの違い、ハードタブとソフトタブの違いという所を解説していきました。ここらへんは、言葉の定義も間違えやすく、誤解して認識しがちですのでしっかりと理解して自分なりのスタイルを作っていきましょう!それでは!!TweetPocket無料でSEからWebエンジニアへ転職しませんか?侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、システムエンジニアという職業だけどコードが書けない事務作業が多くスキルがないため将来が不安スクールに通うと完全未経験者と同じスタートになるからレベルが合わないという、すでに知識があるSEならではのお悩みがあることに気づきました。弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。こちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。