すごいページ(Pythonの内部的な仕組み)
ちょっと、Pythonのオブジェクト生成と、メモリ空間上のアドレスについて調べていたらすごいページを見つけたので、メモしておきます。
dis/inspect モジュールと ceval.c を使った Python のハッキング
親ページは、こっちです。

すごすぎて、詳しく読んでると、はまってしまいそうなのですが、ちょろっとそのエッセンスだけ。
idという組み込み関数を使うと、そのオブジェクトの実体が保存されているメモリ上のアドレスを得ることが出来ます。

>>> l = [1,2,3]
>>> r = [1,2,3]
>>> hex(id(l))
'0x74cfa8'
>>> hex(id(r))
'0x74c800'

hexで16進数表示にしています。同じオブジェクトですが、実体が違うことがわかります。
また、disモジュールのdisメソッドを使うと、引数の関数のPython仮想マシンコードが出力出来ます。

>>> import dis
>>> f = lambda x : x ** 2
>>> f(2)
4
>>> dis.dis(f)
1 0 LOAD_FAST 0 (x)
3 LOAD_CONST 0 (2)
6 BINARY_POWER
7 RETURN_VALUE

面倒なので1行のlambda関数にしましたが、それっぽいコードが出てきます。
はまらない程度に楽しんでください。
大学初等の情報理論の教材には、いいかもしれません。

スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

【2009/01/03 15:54】 | Python | トラックバック(0) | コメント(0) | page top↑
<<MacOSX10.5で64bitのBoostライブラリをbuildする | ホーム | python3.0におけるファイルのデフォルトencoding>>
コメント
コメントの投稿














管理者にだけ表示を許可する

トラックバック
トラックバックURL
→http://tanopy.blog79.fc2.com/tb.php/35-52a598c6
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |