if 文や for 文では条件式を設定させて、条件式が真の場合に複数の文を実行させることができます。この時にどこからどこまでの文を実行するのかを示すのが「ブロック」です。他のプログラミング言語ではブロックを括弧で括って定義している場合が多い。
{ 制御コード }
Python ではインデントを使ってブロックを表現します。ここでは Python におけるインデントを使ったブロックの定義方法について解説します。
・インデントでブロックを定義
if 文や for 文など、内部に別の文を持つ文は「複合文」と呼ばれます。 while 文や try 文の他に、関数の定義やクラスの定義などといったものも複合文です。 if 文では条件式が真の場合にあらかじめ定義した複数の文が実行されますが、どこからどこまでの文を実行するのかを示すのに使われるのがブロックです。
Java 、PHPの書式
if (条件式) {
ブロック内の処理1
ブロック内の処理2
}
Rubyの書式
if 条件式 then
ブロック内の処理1
ブロック内の処理2
end
Pythonの書式
if 条件式:
ブロック内の処理1
ブロック内の処理2
同じ位置にインデントされている文が同じブロックとして扱われます。インデントの数がずれていると別のブロックとみなされます。新しいブロックが出てくるべきではないところでインデントが異なる文を書いてしまうとエラーとなります。
if文の中にif文をつないでいく場合、以下のように記述することになります。
if 条件式:
ブロック内の処理1
ブロック内の処理2
if 条件式:
ブロック内の処理1
ブロック内の処理2
if 条件式:
ブロック内の処理1
ブロック内の処理2
ブロック内の処理3
ブロック内の処理4
if 条件式:
ブロック内の処理1
ブロック内の処理2
一見複雑そうに見えますが、慣れてしまえば当たり前に変わります。
インデント数に決まりはあるのか
インデント数に特に決まりはありません。コーディングする上で見やすい数にするとよいと思います。ただし、一度決めたら以後変更せず統一することをお勧めいたします。
if 条件式:
ブロック内の処理1
ブロック内の処理2
if 条件式:
ブロック内の処理1
ブロック内の処理2
if 条件式:
ブロック内の処理1
ブロック内の処理2
統一していないと、見にくくなってしまうため。