MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

独学Python 4: たくさんのPythonの実行モデル,Pythonプログラムの実行方法,プログラム(モジュール)ファイル, 実際にPythonプログラムファイルを作る.

以下は,プログラミング言語Pythonの書籍として非常に有名な,

『初めてのPython』

を読みながら,Pythonを勉強した時の個人的なメモです.



関連記事:
独学Python 1: 名前の由来, メリット,デメリット,ユーザ - MY ENIGMA
独学Python 2: できること, 技術的な長所, 多言語との連携, 勉強しやすい, 使い易い - MY ENIGMA
独学Python 3: Python インタープリタ,プログラムの実行,プログラムの実行,Pythonプログラム作成,その時インタープリタはなにをしているのか? - MY ENIGMA

Pythonにはmakeやビルドといった作業がない.

Pythonはコンパイラ言語とインタープリタ言語の中間に位置する.

コンパイルをしないわけではない.バイトコードに変換する


Pythonには実行時に新しいプログラムを作るという機能を備えたプログラムも作成可能.

たくさんのPythonの実行モデル

・CPython:
 
 基本的なPython,Cで書かれている.

 基本的にはこれを使えば大丈夫.

 他のモデルに比べて,実行速度が早い,

 機能が揃っている,堅牢性が高い.



・Jython:
 
 PythonとJAVAの統合を目的としたもの.

 これを使えば,PythonでJAVAアプリケーションを作ることができる.

 実行時にはJAVAのプログラムと区別がつかない.

 Javaのクラスをインポートできる.



・Python.NET:

 PythonとMicorsoftの.

 NETフレームワークを利用したアプリケーションの統合を目的としている.

 しかし,まだ実験段階.



・Psyco:

 プログラム実行中にプログラム内を解析し,実行速度を最適化する.

 実行中,実行時間とともに計算速度が向上する.

 通常のPythonと比べて2〜100,通常4倍ほど速度が向上する.

 標準のPythonには入っていないので自分でインストールする必要あり.



・フローズンバイナリ:

 Pythonをコンパイルし,

 フローズンバイナリというバイナリ実行形式ファイルに変換することができる.

 商用ソフトの配布に便利.Pythonが入っていない環境でも実行できる.


Pythonプログラムの実行方法

・対話型プログミング

 まず初めにOSのプロンプトで引数無しで"python"と入力する.

 シェルのパスの設定によっては"usr/local/bin/python"と打ち込む必要があるかも.

 このような対話型セッションの場合,

 入力された演算結果を自動的に出力するという仕様になっているため,

 以下のように'print'を省略してもよい.

>>> neko='kawaii'
>>> neko
'kawaii'
>>> 2**8
256

Ctrl+Dでpythonの対話型セッションが終了する.


対話型プロンプトでコードをテストする.


Pythonの場合,自分のコードをテストするには,

とりあえず対話型に入力して,実行してみることがよい.

個別のモジュールファイルを実行することもできる.


プログラム(モジュール)ファイル

対話型では一度入力したものが消えてしまうので,

大規模なプログラムは作れない.

Pythonではモジュールと呼ばれるファイルにコードを記憶する.


実際にPythonプログラムファイルを作る.

1.spam.pyという以下の内容のファイルを作成.

#はコメント.(何故か自分の環境では日本語を入力すると実行できなかった.)
print 2**8
print 'the bright side '+'of life'

2.そして実行
 
 表示内容

256
the bright sideof life


・以下のコマンドを利用すれば,出力結果を他のファイルに出力できる.

python spam.py > saveit.txt

Unixのスクリプト

!/usr/bin/pythonをファイルの先頭につけると,./brian.py で実行できた.

クリックによるPythonプログラムの実行.

Windowの場合,ファイルをクリックすると実行できる.

しかし,プログラムが実行されるとターミナルがすぐに消えてしまう.

そんな時はファイルの最後尾にraw_input()を書き加えると,

文字入力を待つようになる.

一方,このような起動の仕方の場合,

エラーメッセージが読めなくなるので,

基本的にはコンソールでプログラミングした方が良い.


モジュールのインポートとリロード

.pyで書かれているファイルはすべてモジュールといえる.

モジュールは,そのモジュールをインポートすることにより,

他のファイルから利用することができる.


モジュールの属性

外から利用できるモジュールの内容を属性と呼ぶ.

モジュールの属性にアクセスするには,

<モジュール名>.<属性名>でアクセスすることができる.

以下は例.

% Python
>>>import neko
>>>print neko.title
The Meaning of Life

また,fromを使って,特定の属性にアクセスすることができる.

以下は例

% Python
>>>from myfile import neko
>>>print neko
The Meaning of Life

つまりfromを利用すると,その後は単なる普通の変数のように利用できる.

・ 関数dirを使うと,そのモジュールの属性のリストを見ることができる.

>>> dir(threenames)
['__builtins__', '__doc__', '__file__', '__name__', 'a', 'b', 'c']


カレントディレクトリにないモジュールファイルをインポートしたい場合には,

モジュールのサーチパスについて学ぶ必要がある.