(参考)インデントの効用
Pythonの「インデントによるブロックの範囲」というルールは,ソースファイルの見た目の構造がプログラムの文法に影響を与えるということだ.
これは言語の設計としてはかなり特殊である.
他の高級言語,C言語,perl,PHP,Javaなどは"{}"でブロックを定義する.
ブロックのどちらかに過不足があれば――つまりブロックが崩れていれば,文法チェックでエラーとなる.
ブロックの対応さえマッチしていればソースコードの書式には制約がない.
このためインデントをいいかげんにして適当に書いたソースコードは,読みづらいものになりがちである.
※これを逆手にとって「もっとも醜いCコードコンテスト」(IOCCC - Wikipedia)といった大会が開かれたりしている.(C言語以外にもPerlやJavascriptの大会もある) 下の例は円周率を計算するプログラム(1988年大会にエントリー)
code:円周率計算.c
int F=00,OO=00;main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()
{
_-_-_-_
_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_
_-_-_-_
}
一方,Pythonのインデント法では,連続するブロックは必ず連続するインデントで字下げされなければならない.
これを破ると文法エラーとみなされる.
この制約の結果,ソースコードの見た目が整えられ,誰が書いても同じようなコードになり,プログラムのメンテナンスがやりやすいというメリットにつながっている.
しかし,このルールだとブロックの終わりが明示的でない(インデントしなくなったら終わる)ため,ブロックのネスト(入れ子)が深くなる=インデントが深くなると,ブロックの終わりがどこなのかが判別しにくなる.
また,他のサイトからコピペした際に,インデントがずれることは非常によくあることで,Pythonだとまったく動かなかったり,間違った動作をしてしまい,延々とインデントの修正をする羽目になることもある.
※目に見えにくい空白やタブだけに苦行
しかし,一般論として,最初にPythonを習っておけば,他の言語でも「行儀よく見やすいプログラム」 が自然と書けるようになる.
Pythonはいわば 「行儀の良いプログラミング養成ギブス」なのだ.
この教育的なメリットは大きいと言えるだろう.
以上.
2023/7/4