重複の可能性:
Python は関数定義を出力できますか?
Javascriptでは、関数のコードを文字列として出力できますか?
Javascript での例:
function thisFunctionPrintsItself(){
return thisFunctionPrintsItself.toString();
}
Pythonで同じことを行うことは可能ですか?
重複の可能性:
Python は関数定義を出力できますか?
Javascriptでは、関数のコードを文字列として出力できますか?
Javascript での例:
function thisFunctionPrintsItself(){
return thisFunctionPrintsItself.toString();
}
Pythonで同じことを行うことは可能ですか?
あなたはそれを行うことができますが、すべてが最初にバイトコードにコンパイルされるため、結果は役に立ちません。
def printItself():
print repr(printItself.func_code.co_code)
モジュールを逆アセンブルに使用することもできますdis
が、結果は移植可能であるとは限りません。
def disassembleItself():
print __import__('dis').dis(disassembleItself)
def foo ():
import inspect
return inspect.getsource(foo)
print (foo())
ここで、inspect モジュールはソース ファイルを読み取るため、ソース ファイルが見つからない場合 (.pyc
または.pyo
モジュールのみが使用されている場合)、または関数がオンザフライで、対話型インタープリターなどでコンパイルされた場合は機能しません。