Python可以打印函数定义吗?

162 投票
9 回答
127414 浏览
提问于 2025-04-15 15:03

在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文件等就不行)。

撰写回答