2012-08-12 44 views

回答

3

您可以这样做,但结果并不实用,因为所有内容都先编译为字节码。

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

您还可以使用dis模块进行拆卸,但结果并不garuenteed可移植。

def disassembleItself(): 
    print __import__('dis').dis(disassembleItself) 
+0

这就是我得到的第一个函数输出:'t \ x00 \ x00t \ x01 \ x00j \ x02 \ x00j \ x03 \ x00 \ x83 \ x01 \ x00GHd \ x00 \ x00S' – 2012-08-12 20:48:25

+0

@Anderson - 字节码。 – Antimony 2012-08-12 20:49:13

+0

是否有可能实际打印函数的源代码,如在Javascript中? – 2012-08-12 20:49:47

1
def foo(): 
    import inspect 
    return inspect.getsource(foo) 

print (foo()) 

这里,检查模块读取源文件,这样就不会工作,如果他们错过(和正在使用的只是.pyc.pyo模块)或函数编译导通在交互式翻译或其他方面。

+0

是否可以编写一个可以将另一个函数作为参数的函数,然后打印该函数的源代码? – 2012-08-12 21:47:33

+0

这正是'inspect.getsource'所做的。 – tjollans 2012-08-12 21:49:19

相关问题