作者: Koichi Yamamoto
日時: 2002/3/16(17:57)
こんにちは、山本です。

"Noritsugu Nakamura <nnakamur@...>"さんは書きました:
> kikwai@... (機械伯爵) wrote:
> >  Pythonでは、インデントだけでブロックが判別されるので、
> > {}を書く必要がありません☆
> > 
> >  ・・・いや、ご存知とは思いますけど、ノリで・・・
> 
> それも本当に良いのか悪いのか私には判断ついていないです。
> (悪いと完全には言えないと断言できないということは
> OK ってことなのかもしれません (^_^;

Cのプログラムで多段のブロックを使っているソースを読むと、

                  }
                }
              }
            }
          }
          break;
        }
      }
    }
  }
  return 0;
}

みたいな部分に遭遇することがあります。
「あのbreakは何をbreak?」みたいな(^^;

上記の例は極端に悪い例でしたけど、
O'Reillyの「Python入門」P.118に、インデント構造を利用することで
ブロックの始まりと終わりに間違いの起こりやすい記号やマークを
記述しなくて済むようにしていると説明されています。

また、「=」が演算子として使えなくて結構痛いと思うこともありますが、
これは「==」の記述ミスを避けるためと説明されています。

Pythonってそういう些細だけどありがちな問題を回避するための工夫が
なされている言語なんだろうなと、今、本を読んで初めて思いました(笑)。

あと、条件式に「10 <= x < 20」みたいな書き方ができるあたり
学校の先生に好かれそうな感じがしますね(^^)。
関数定義の()が省略できないのもこういう数学的?理由だったりして(^^;

> >  まぁ、{}が省略できる分、()が省略できないというトレード
> > オフがありますが、これについては、今後さらにつっこんで話して
> > いきたいと思います。

> 良く分かっていないのは Python で関数定義の () はなぜ
> 必要なのか?です。(引数列の終端として「:」がつくので
> 素人考えでは要らないのでは?と思ってしまったのですが…)

--
Koichi Yamamoto, 
http://www3.ocn.ne.jp/~yamako/