wiki:PythonIntroIndent

Version 8 (modified by sgk, 13 years ago) (diff)

--

Python:インデントが気持ち悪い

Python情報 >> Pythonを学ぶ人に

  • 慣れるしかない。慣れると楽ちん。
  • C言語などで真面目にインデントしてる人ならすぐに慣れます。
  • タブとスペースが混在しても大丈夫。ただし、タブストップは8文字に設定すること。

Pythonと言えばインデント。Pythonを始める人が一番最初にとまどうのがインデントでしょう。

どうもね、たとえばC言語ならこんなふうに書くところが、

for (int i = 0; i < 100; ++i) {
  for (int j = 0; j < 100; ++j) {
    if (i * j % 10 == 0)
      printf("%d %d\n", i, j);
  }
}

Pythonではこんなふうに書く。

for i in range(100):
  for j in range(100):
    if i * j % 10 == 0:
      print "%d %d" % (i, j)


どうも、しまりがなくて落ち着かない。 でもこれは慣れるしかないです。 そのうち気にならなくなりますよ。 C言語でもインデントをしっかり書いている人なら、とくに悩むことはないでしょう。慣れ、だけです。

エディタによっては、スペース(空白文字)が多くなると自動的にタブに変換してしまうことがあります。 また、タブとスペースとを、見た目では判断できないことが多いです。 こんなエディタを使っていてもPython大丈夫だろうか?そう悩む人もいるでしょう。 答えは、大丈夫です。 Pythonは、タブストップを8文字と仮定して、内部的に空白に変換してから取り扱います。 だから、エディタのタブストップが8文字に設定してあれば、タブとスペースが混在しても全く問題起きません。 タブストップが8文字じゃ絶対イヤという人は、いろいろとややこしいのでご注意ください。

ちなみに、当社のコーディング規約では、インデントの幅は2文字。 ちょっと詰まりすぎてる雰囲気もあるけれど、コンパクトにすっきり書けます。 タブストップはもちろん8文字。 viの設定は、こんな感じです。

set sw=2 ts=8 ai