静岡理工科大学 菅沼ホーム 目次 索引

2.プログラム構造

  1. 行構造

      C/C++ のプログラムは,自然言語と同様,一つの文の開始や終了位置に特別な制限がなく,フリーフォーマットで記述できますが,Python のプログラムは行単位(行頭から改行まで)で処理されます.ただし,一つの文を 1 行で記述できない場合は,以下に示すように,バックスラッシュ文字「 \ 」を使って継続させることが可能です.また,\ で継続する行(下に示す文の 1,2 行目)の後ろには「 # 」記号を使用してコメントを記述することができません.
    a = abc + efg * xxx \
        + aaa - bbb / ccc \
        + yyy / 30 + hhh   # ~ に関する計算
    			
      なお,以下に示すように,丸括弧 ( ),角括弧 [ ],および,波括弧 { } 内の式は,バックスラッシュを使わずに複数行を使用して記述することが可能です.このときは,各行ごとにコメントを記述することができます.
    aaa = [1, 2, 3,   # ~
           4, 5, 6,   # ~
           7, 8, 9]   # ~ 
    			
      C/C++ と同様,if 文while 文など,実行順序を制御するための文が Python にも存在します.しかし,その記述方法は C/C++ とはかなり異なっています.詳細については後ほど述べますが,ここでは,行単位の入力方法について説明します.例えば,if 文の場合,C/C++ では以下に示すように記述されます.
    01	if (条件) {
    02		a = 10;
    03		b = 20;
    04	}
    05	else {
    06		c = 30;
    07		d = 40;
    08	}
    			
      この文は,条件が真であれば 02,03 行目を実行し,偽であれば 06,07 行目を実行することを意味しています.プログラムの読みやすさのため,上の例に示すように,02,03,06,07 行目は,01,04,05,08 行目に対して,半角スペースまたは Tab を使用して字下げを行うべきですが,波括弧 { や } が正しく設定されていれば,字下げを行わなくても正しく動作します.また,条件が真または偽に対する処理が 1 文だけで記述できる場合,例えば,条件が真である場合は 02 行目だけとなる場合は,01 行目や 04 行目の波括弧も必要ありません.さらに,読みやすさの点を無視すれば,各行を複数行にわたって記述したり,すべてを同じ行に記述することも可能です.

      しかし,Python の場合は,条件が真や偽になる場合の処理が複数行となる場合であっても,波括弧を使用しません.以下に示すように,半角スペースまたは Tab を使用して字下げを行うことによって,その制御範囲を記述することになります.この点は,while 文等に対しても同様です.つまり,Python においては,制御構造を正しく理解し,適切な字下げを行わないと,目的とする結果が得られません.場合によっては,コンパイルさえ行ってくれません.適切な字下げが行われていない C/C++ などで記述された汚いプログラムを見ると,他の言語に対しても,Python の考え方を導入して欲しいと思います.ただし,プログラムが長くなると,波括弧があった方が見やすく感じます.インデントの強制的な使用は重要ですが,見やすさの点からいって,波括弧を付けさせた方が良いのではないでしょうか.
    01	if 条件 :
    02		a = 10
    03		b = 20
    04	else :
    05		c = 30
    06		d = 40
    			

  2. コメント

      以下に示すように, # から改行まではコメントとみなされます.
    a = 10   # 変数 a に 10 を代入 
    			
      また,以下に示すように,Python スクリプト中の 1 行目か 2 行目にあるコメントが正規表現 coding[=:]\s*([-\w.]+) にマッチする場合,コメントはエンコード宣言(プログラムを記述する文字コードの宣言)として処理されます.
    # -*- coding: UTF-8 -*-
    			
      Python には,C/C++ における /* と */ のように,複数行にわたるコメントを記述する記号は存在しません.しかし,Python では,代入などの演算を行わず,単に文字列だけを記述した場合,その文字列に対する処理は行われません.そこで,3 連引用符(引用符を 3 つ続ける) ''',または, """ を使用した複数行に亘る文字列を利用することにより,以下に示すように,複数行にわたるコメント(的な文字列)を記述することが可能です.
    """
       コメント・・・
       コメント・・・
    """
    			
      なぜ,C/C++ や Java などのように,// や /* */ でコメントを表すような方法が採れないのでしょうか(除算記号 // のため?).今まで多くの言語で使用されてきた方法に問題がなく,かつ,新しく作成する言語の設計に支障がないようであれば,同じ方法を使用すべきだと思います.言語設計者の趣味や差別化のために変更するようであれば,言語使用者にとって非常に迷惑です.

静岡理工科大学 菅沼ホーム 目次 索引