私がPythonインタープリターにいて、次のように関数を定義するとします。
def h(a):
return a
バイトコード (dis を使用した逆アセンブリではない) を見たい場合は、通常、h.func_code.co_code
. バイトコードを見る他の方法はありますか?
例えばインタプリタでh
、関数呼び出しにせずに打ち込むだけで、関数のアドレスを取得します。そのアドレスを使用してバイトコードを取得できますか? 他の方法はありますか?
コメントからの追加情報:
このアプリは Python で記述され、Py2App、cx_freeze、py2exe などを使用して圧縮されています。実行可能ファイルでいくつかのトリックを実行したところ、実行可能ファイルを起動すると、Python コマンド ラインが表示されます。そこから、自分の関数h
をインターピーターに手動で入力しました。
、などの他の属性h.func_code
は存在しますが、存在しません。co_varnames
co_argcount
co_code
h.func_code.co_code
インタープリターに入力すると、 'code' object has no attribute 'co_code'
.
更新:コメントから再び。私が知る限り、オペコードはアプリに同梱されている Python インタープリター用に再マッピングされています。