from やら import やらの解決について 1/n
名前解決分からんです。
https://twitter.com/__10100__/status/241068654811308032:twitter
https://twitter.com/__10100__/status/241071295691882496:twitter
ってことがあってコードのディスアセンブルすれば何かわかるかなと思い以下のページを参考に調べました。(調査中)
参照1: 31.12. dis ― Python バイトコードの逆アセンブラ (STORE_NAME が表示されていない。英語版と見比べるとどこにあるかわかる。)
参照2: dis – Python バイトコードディスアセンブラ
結果
環境: Python 2.7.2, Debian 6.0.5
$ cat hoge.py import foo.bar.baz as hoge $ python -m dis hoge.py 1 0 LOAD_CONST 0 (-1) 3 LOAD_CONST 1 (None) 6 IMPORT_NAME 0 (foo.bar.baz) 9 LOAD_ATTR 1 (bar) 12 LOAD_ATTR 2 (baz) 15 STORE_NAME 3 (hoge) 18 LOAD_CONST 1 (None) 21 RETURN_VALUE $ cat fuga.py from foo.bar import baz as hoge $ python -m dis fuga.py 1 0 LOAD_CONST 0 (-1) 3 LOAD_CONST 1 (('baz',)) 6 IMPORT_NAME 0 (foo.bar) 9 IMPORT_FROM 1 (baz) 12 STORE_NAME 2 (hoge) 15 POP_TOP 16 LOAD_CONST 2 (None) 19 RETURN_VALUE
違うことは分かったんですが、不明な点があってわからんです。
不明点
- 4 つめの数字の意味
- 参照1 に記載のある次の変数 co_consts, co_names (定数と名前のスタック?)
引き続き調査ですね。