2013-03-08 74 views
2

我有一个系统,在这个系统中我经常试验函数的内容,然后运行程序。由于我经常有很多终端窗口打开,我有时并不完全知道哪个版本的功能属于哪个终端窗口。如何将函数的python代码打印到终端?

有没有办法将特定功能的源代码打印到终端上?

+3

http://stackoverflow.com/questions/777371/python-reflection-can-i-use-this-to-get-the-source-code-of-a-method-definition – Hoopdady 2013-03-08 15:27:36

+2

使用iPython,然后你只需要'func ??'来获取任何类或函数的源代码。 – 2013-03-08 15:29:12

+0

@赖瑞安 - 感谢您的建议。不幸的是,它是一个独立的程序,我不能在交互式shell中使用。此外,由于我经常更改代码,因此我需要知道代码在运行时的状态,而不是在此之前或之后。出于这个原因,inspect.getsource()函数正是我所需要的。不过谢谢你的建议! – kramer65 2013-03-10 07:57:06

回答

0

好的。感谢Hoopdady在Stackoverflow提供了类似的问题。只为未来的读者提供解决方案。我需要使用inspect模块,并使用其方法“getsource”,我可以简单地将方法或函数的源打印到命令行。

import inspect 
import mymodule 
print inspect.getsource(mymodule.sayHello) 

感谢Hoopdady!

+0

尽管我普遍认为'inspect'是一个很好的答案,但我不同意你无法获得解释器中定义的对象的源代码。如果你使用'dill.source.getsource',你可以得到函数和lambda表达式的来源,即使它们是交互式定义的。它也可以从curries中定义的绑定或未绑定类方法和函数获取代码...但是,如果没有包含对象的代码,您可能无法编译该代码。 参见:https://github.com/uqfoundation/dill – 2014-01-24 18:02:32