Я искал способ конвертировать функцию, класс или объект модуля в Python в объект кода Python.
Несколько человек выполняют это, выполняя inspect.getsource()
и compile()
, но проблема в том, что вы читаете потенциально измененный файл или, если он был составлен в интерактивной оболочке Python, вы просто получите исключение на getsource
.
Мне было интересно, есть ли у кого-нибудь еще решение этой проблемы, поэтому оно может выглядеть примерно так:
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()
...