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

Python の実行

  Python で記述された命令(スクリプト)を実行させる方法として,二つの方法が存在します.一つは,Python のインタプリータを実行し,表示されたコマンドプロンプトの後に,コマンドを会話的に入力し実行させる方法です.他の一つは,スクリプト(コマンドや関数定義等の集まり,プログラム)をファイルに記述しておき,そのファイルを実行させる方法です.

  1. 対話モード

      最初に,対話モードで実行する方法について説明します.Window のコマンドプロンプトを起動し,

    > Python

    と入力すると,Python のインタプリータが起動し,「 >>> 」というコマンドプロンプトが表示されるはずです(もちろん,この前に,Python をインストールし,適切な箇所に PATH を設定しておく必要があります).ただし,Python 3.3 とそれ以降のシステムワイドなインストールでは,ランチャが PATH に追加され,2 種類の Pythonがインストールされていても,

    > py -2 # Python 2.* の実行
    > py -3 # Python 3.* の実行

    のいずれかを入力すれば,希望する Python インタプリータを起動することができます.以後の例においても同様ですが,上の例における # から行末まではコメントです.なお,インタプリータを終了させるには,ctrl-Z,または,quit() を入力します.

      以下の例に示すように,プロンプト「 >>> 」が表示されている状態で,式や関数を入力すれば,その結果が出力されます.なお,以後の例においても同様ですが,行番号は,説明のために付加してあります.

    01	>>> print(2 + 3)
    02	5
    03	>>> 3 + 4
    04	7
    05	>>> 10 + _
    06	17
    07	>>> a = 10
    08	>>> if a == 10:
    09	...     print(a)
    10	...
    11	10
    12	>>> 'abc'
    13	'abc'
    			
    01 行目

      print() はオブジェクトを表示するための組み込み関数です.表示されるオブジェクトは,組み込み関数 str() が行うように文字列に変換されます.Python においては,数値,数値の集まり,など,ほとんどのものをオブジェクトと呼びます.ここでは,演算した結果を表します.

    05 行目

      直前の計算結果が変数「 _ 」に入っています.もし,このような変数が存在しなければ,
      >>> c = 3 + 4
      >>> 10 + c
    				
    のように,「 3 + 4 」の結果を,c に記憶しておく必要があります.変数「 _ 」の存在は,その手間を省き,より簡単にプログラムを書くことができるようになります.しかし,変数「 _ 」の意味も覚えなければならない,Python を知らない人には 5 行目を理解できない,などの点を考えると,どちらが好ましいのでしょうか.プログラムにとって最も重要なことは,「読みやすく,理解しやすい」ことです.「記述しやすい」などと言ったことは二の次です.以下の章においても,見ただけでは何を行おうとしているのか理解できないような記号や表現がよく現れます.できる限り,そのような記号や表現の使用は避けた方が良いと思います.以後,多くのプログラム例を示しますが,変数や関数の説明箇所を除き,できる限り Python に対する知識はないが,他の言語に対する知識があるような人にも理解しやすいことを念頭に置いて,プログラムを書いていきたいと思います.

    08 行目~ 10 行目

      一つの命令が複数行にわたる場合,2 行目以降に対してはプロンプト「 ... 」が表示されます.複数行にわたる命令を終了させるためには,プロンプト「 ... 」に対して改行だけを入力します( 10 行目).

      if 文については,後ほど説明しますが,08,09 行目は,C++ によって記述すれば,
      if (a == 10)
       	cout << a;
    				
    となります.C++ においては,09 行目の出力文に対する字下げを行わなくても実行可能ですが,Python においては,字下げ自体が構造を決定する要素であるため,必ず字下げする必要があります.字下げも正しく行わない C/C++ のプログラマがいることを考えると,C/C++ においても,字下げを強制するような仕様が好ましいかもしれません.

      また,以下に示すように,対話モードに入ること無しに,Python のコマンドを実行することも可能です.結果は,Window のコマンドプロンプト上に出力されます.
    py -3 -c print(2+3)   # 一般形: python -c command [arg] ... 
    			

  2. ファイルの利用

      複雑な処理を行いたい場合,対話モードを利用して一連のコマンドを順に入力していくことは大変な作業になります.そこで,一連のコマンド(スクリプト)をファイル,例えば cal1.py (一般的に,ファイル名は「~.py」)に,
    # -*- coding: UTF-8 -*-
    a = 10
    b = 20
    print(a + b)
    			
    のような形で保存し,Window のコマンドプロンプト上において,
    py -3 cal1.py   # 一般形: python ファイル名 [arg] ... 
    			
    と入力することによって,結果を得ることができます.なお,ファイル内容の 1 行目は,文字コードを表しています.

      モジュールも,上に示したファイルと同様,Python の定義や文が入ったファイルです.大きなプログラムの一部や,他のプログラムにおいても使用可能な汎用的な処理部分を記述するために使用されます.例えば,以下に示すモジュール cal2.py は,加算または減算を実行し出力するためのものです.なお,def で始まる部分は,関数を表しています.
    # -*- coding: UTF-8 -*-
    
    def add(a, b):
    	c = a + b
    	print(c)
    
    def sub(a, b):
    	c = a - b
    	print(c)
    			
    このモジュールを使用することによって,例えば,以下に示すような処理を実行できます.
    >>> import cal2
    >>> cal2.add(2,3)
    5
    >>> cal2.sub(2,3)
    -1
    			
      「cal2.add(2,3)」の「cal2.」の部分を記述したくない場合は,上の 1 行目の代わりに,
    >>> from cal2 import add
    			
    を入力してやれば,「add(2,3)」の記述で正しく動作します.また,
    >>> from cal2 import *
    			
    という記述を利用すれば,モジュールで定義されている全ての名前(関数内で定義されているローカルな変数名は除く)を import できます.この例の場合は,関数 sub に対しても,「sub(2,3)」の記述で正しく動作するようになります.

      場合によっては,モジュールまたはその一部を,Window のコマンドプロンプト上から実行したい場合があります.例えば,上の例において,関数 add を実行したい場合について考えてみます.Window のコマンドプロンプト上から
    py -3 cal2.py 2 3
    			
    と入力しても何も出力されません.しかし,cal2.py の最後に,
    if __name__ == "__main__":
    	import sys
    	add(int(sys.argv[1]), int(sys.argv[2]))
    			
    の 3 行を追加すると,
    py -3 cal2.py 2 3
    py -3 -m cal2 2 3
    			
    のいずれの方法によっても,結果が正しく表示されるようになります.なお,__name__ は,モジュール名が記憶されているグローバル変数です.

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