アメリエフの技術ブログ

Amelieff Staff Blog

Pythonを書くときに、タブじゃなくてスペースでインデントする

こんにちは。
先日、金さん(kimk)がお土産で買ってきてくださった栗羊羹があまりに美味しかったので、いっそ羊羹をまとめ買いするかどうか、悩んでいる久保(kubor)です。

羊羹のまとめ買いで悩む方が読者にいるかどうかはわかりませんが、プログラムを書くときにスペースインデントかタブインデントか悩むことはあるかと思います。

例えば、Python2では問題になりませんが、Python3だとスクリプト中のインデントに使うスペースとタブの混在は許されません。
したがってどちらかに統一する必要があります。
この場合、タブで書くのか、スペースで書くのか、悩むならスペースで書くのがおすすめです。

タブは環境依存で幅が変わる

多くのテキストエディタにおいて、タブはスペース8個分で表示されますが、
テキストエディタや、設定によって表示幅が変わります。

これによって大きく可読性が損なわれることもあります。
スペースでインデントするメリットは、この幅が変わらないという点です。

スペースでインデントするためにスペースキーの連打は不要

pep8ではインデントのスペース幅は4個分を推奨しています。
とは言え、毎回スペースを4回もタイプしていると気が狂いそうです。

テキストエディタ側で、タブキーをタイプした際にスペースが4個入力されるように設定していまいましょう。

例えば、Vimをお使いの方は、「~/.vimrc」に以下を記述します。

set expandtabset shitwidth=4set softtabstop=4

各項目の意味は以下の通りです。

  • expandtab:タブキーをタイプしたときに、タブの代わりにスペースを入力
  • shiftwidth:Vimが自動的にインデントするときのスペースの数
  • softtabstop:タブキーを入力した時のスペースの数


これで気が狂わずに済みます。
この設定を有効にしている時に、本当にタブを入力したいときは、

Ctrl+V [TAB]

で入力可能です。

自分が入力したのがタブなのかスペースなのか見えないからわからない時には、不可視文字を表示させる設定が有用です。
「Vimで不可視文字を表示させる方法」