python 2.5 では、lib-dynload というディレクトリに
_codecs_iso*.so のDLLがある 。iso2022_jp.py を見ると、
import されている。
import 命令で、python スクリプトをロードすると、
バイトコンパイルされた .pyc ファイルが自動的に作成される 。
python を -O オプションつきで同様にすると、やや小さな
.pyo というバイトコードが作られる。
compileall -O というコマンドもある。
.pyc には、元のスクリプトの修正日付が書き込まれており、
元のファイルの修正日付が合っていないと.pyc は無視される
という。無視してどうするのだろう? コンパイルしなおさない
のだろうか?
バイトコードは、読み込み速度が速くなるだけだ、という。
ためしに print "hello" だけのスクリプトをバイトコンパイル
してみたら、15バイトのスクリプトが 106 バイトになった。
1KB 程度の iso2022_jp.py は 1.4KBになっていた。
/usr/lib/python2.5/encodings/aliases.py は 14KBが9KBに
なっていた。1-2KBのスクリプトはだいたいが、
バイトコードのほうが大きくなっているようにも見える。
/usr/lib/python2.5 の .py と .pyc を見ると、
ファイルの大きさの差はさらに小さいように見える。
ファイルの大きさだけ見ると、たいした速度向上があるとは
思えない。
「スクリプトをバイトコードにする時間が省略される」、
と説明しないのは、その時間があまりに短いためなのか?
わからん。
python.jp の「
モジュールについてもう少し」マニュアルを読むと、いきなり fib() という
標準で組み込まれているフィボナッチ数列関数が出てくる 。
このあたりは言語としてわかりやすさを求めた、というよりも、
perl や awk よりも配列や数列の機能を特に重視した、数学や
数値計算の処理に重点を置いた言語、という見方ができる。
また、sh、perl に比べると、変数の表現($)やブロックの記述 ({ })も、
記号を使わずに、インデントと : (コロン) で区切る書式は
Fortran を思い起こさせる。
今日の python の印象は perl + fortran。