1

重複の可能性:
Python は関数定義を出力できますか?

Javascriptでは、関数のコードを文字列として出力できますか?

Javascript での例:

function thisFunctionPrintsItself(){
    return thisFunctionPrintsItself.toString();
}

Pythonで同じことを行うことは可能ですか?

4

2 に答える 2

3

あなたはそれを行うことができますが、すべてが最初にバイトコードにコンパイルされるため、結果は役に立ちません。

def printItself():
    print repr(printItself.func_code.co_code)

モジュールを逆アセンブルに使用することもできますdisが、結果は移植可能であるとは限りません。

def disassembleItself():
    print __import__('dis').dis(disassembleItself)
于 2012-08-12T20:44:23.900 に答える
1
def foo ():
    import inspect
    return inspect.getsource(foo)

print (foo())

ここで、inspect モジュールはソース ファイルを読み取るため、ソース ファイルが見つからない場合 (.pycまたは.pyoモジュールのみが使用されている場合)、または関数がオンザフライで、対話型インタープリターなどでコンパイルされた場合は機能しません。

于 2012-08-12T20:49:41.447 に答える