MyEnigma

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

独学Python 3: Python インタープリタ,プログラムの実行,プログラムの実行,Pythonプログラム作成,その時インタープリタはなにをしているのか?

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

『初めてのPython』

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



関連記事:
独学Python 1: 名前の由来, メリット,デメリット,ユーザ - MY ENIGMA
独学Python 2: できること, 技術的な長所, 多言語との連携, 勉強しやすい, 使い易い - MY ENIGMA


Python インタープリタ

Pythonのプログラムはどのような形であれ,

Pythonインタープリタによって実行される.

(Mac OS Xの場合,出荷時にインストールされていた.

ターミナルで’python’とタイプするとpythonが起動する.)


プログラムの実行

print 'hello world'

とタイプするとhello worldと出力され,

print 2**100

とタイプすると2の100乗1267650600228229401496703205376がオーバーフローせずに表示される.

拡張子

このような内容のPythonプログラムファイルの拡張子は

慣例的に.pyにするが,別にこれでなくても大丈夫らしい.


Pythonプログラム作成

vimで以下の内容が書かれた19.pyというプログラムを作成.

print 'hello me!'
print 3**4

同じディレクトリで

python 19.py


とタイプすると,

hello me!
81

と表示された.

その時インタープリタはなにをしているのか?

1. ソースコードをバイトコードという形式に変換する.

バイトコードとはソースコードと機械語との中間に位置する形式で,

プラットフォームに依存しなくなる.

実行のパフォーマンスを向上させるためにこのような変換をする.


書き込み権限があれば,

バイトコードは.pycという拡張子をもったファイルとして保存される.

一度バイトコードが作成されると,

ソースコードに修正が加えられていない場合,

コンパイルが行われず,起動が早くなる.

これはインタープリタがファイルのタイムスタンプを見ているからである.


また,書き込み権限がない場合,このファイルは破棄される.

大規模なシステムを作る時には,このプロセスは気を付けた方がよい.


また他人にプログラムを提供する時には,バイトコードで渡されることが多い.


2. バイトコードはPythonの仮想マシン(Python Virtual Machine=PVM)に送られる.

PVMはプログラムの命令をひとつずつ行うループ処理をする.(ランタイムエンジン)