我一直在寻找将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)