查看Python函数的代码
假设我在Python的命令行界面里,给了我一个函数f
。我该怎么获取这个函数的源代码字符串呢?(是在命令行里获取,而不是手动打开代码文件。)
我希望这个方法也能适用于在其他函数内部定义的lambda函数。
4 个回答
3
也许这个可以帮到你(也可以用lambda,但它非常简单),
import linecache
def get_source(f):
source = []
first_line_num = f.func_code.co_firstlineno
source_file = f.func_code.co_filename
source.append(linecache.getline(source_file, first_line_num))
source.append(linecache.getline(source_file, first_line_num + 1))
i = 2
# Here i just look until i don't find any indentation (simple processing).
while source[-1].startswith(' '):
source.append(linecache.getline(source_file, first_line_num + i))
i += 1
return "\n".join(source[:-1])
8
这可能不是你想要的答案,但在 ipython 中,你可以这样做:
>>> function_name??
这样你就能看到这个函数的代码来源(前提是它在一个文件里)。所以对于 lambda 函数来说,这个方法是行不通的。不过,这个功能确实很有用!
9
inspect.getsource
看起来,getsource这个功能无法获取lambda表达式的源代码。