Python可以打印函数定义吗?
在JavaScript中,我们可以打印出一个函数的定义。那么在Python中,有没有办法做到这一点呢?
(我只是想在交互模式下玩玩,想看看一个模块的内容,而不需要用open()打开它。我只是好奇而已。)
9 个回答
31
这是我找到的做法:
import inspect as i
import sys
sys.stdout.write(i.getsource(MyFunction))
这个方法可以去掉换行符,把函数的输出格式整理得很好。
129
如果你在使用 iPython,你可以输入 function_name?
来获取帮助信息。而如果你输入 function_name??
,它会尽量显示这个函数的源代码。
208
如果你在导入一个函数,可以使用 inspect.getsource
这个工具:
>>> import re
>>> import inspect
>>> print inspect.getsource(re.compile)
def compile(pattern, flags=0):
"Compile a regular expression pattern, returning a pattern object."
return _compile(pattern, flags)
这个方法在交互式提示符下是可以用的,但似乎只适用于那些被导入的对象(而不是在交互式提示符中定义的对象)。当然,它只有在Python能找到源代码的时候才有效(所以对于内置对象、C语言库、.pyc文件等就不行)。