disモジュールはPythonバイトコードを逆アセンブルしてバイトコードの解析を助けます。Pythonアセンブラがないため、このモジュールがPythonアセンブリ言語を定義しています。このモジュールが入力として受け取るPythonバイトコードはファイルInclude/opcode.hに定義されており、コンパイラとインタプリタが使用しています。
例: 関数myfuncを考えると:
def myfunc(alist): return len(alist)
次のコマンドをmyfunc()の逆アセンブリを得るために使うことができます:
>>> dis.dis(myfunc) 2 0 LOAD_GLOBAL 0 (len) 3 LOAD_FAST 0 (alist) 6 CALL_FUNCTION 1 9 RETURN_VALUE 10 LOAD_CONST 0 (None) 13 RETURN_VALUE
(``2''は行番号です)。
disモジュールは次の関数と定数を定義します:
[bytesource]) |
[tb]) |
code[, lasti]) |
>
"とともに表示されます。
パラメータインタープリテーションはローカルおよびグルーバル変数名、定数値、分岐目標、そして比較演算子を認識します。
code[, lasti]) |