如何将python函数/类/模块对象转换为python代码对象

我一直在寻找将python中的函数,类或模块对象转换为python代码对象的方法.

少数人通过执行inspect.getsource()和compile()来完成此操作,但是这样做的问题是您正在读取一个可能已更改的文件,或者如果它是在交互式python shell中组成的,则只会得到一个异常.获取资源.

我想知道是否还有其他人可以解决此问题,所以它看起来可能像这样:

import dis

def func(arg):
    x = 5
    arg = 3
    return x + arg

code_obj = function_to_code_obj(func)
dis.disassemble(code_obj)

并像使用compile()或parser.suite()创建代码对象一样,将代码对象反汇编输出.

解决方法:

对于功能,可以使用func_code属性:

import dis

def func(arg):
    x = 5
    arg = 3
    return x + arg

def function_to_code_obj(func):
    return func.func_code

code_obj = function_to_code_obj(func)
dis.disassemble(code_obj)
上一篇:Java-不使用JDK进行动态编译


下一篇:如何在Ubuntu 12.04上从源代码为python2.6编译pygtk