如何获取Python函数的源代码?

2024-04-25 19:08:08 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个Python函数,定义如下:

def foo(arg1,arg2):
    #do something with args
    a = arg1 + arg2
    return a

我可以使用foo.func_name获取函数名。我怎样才能以编程的方式得到它的源代码,就像我在上面输入的那样?


Tags: 函数namereturn定义foodef编程with
3条回答

如果该函数来自文件系统上可用的源文件,那么^{}可能有帮助:

如果foo定义为:

def foo(arg1,arg2):         
    #do something with args 
    a = arg1 + arg2         
    return a  

然后:

import inspect
lines = inspect.getsource(foo)
print(lines)

返回:

def foo(arg1,arg2):         
    #do something with args 
    a = arg1 + arg2         
    return a                

但我相信,如果函数是从字符串、流或从编译文件导入编译的,则无法检索其源代码。

如果源代码不可用,dis是您的朋友:

>>> import dis
>>> def foo(arg1,arg2):
...     #do something with args
...     a = arg1 + arg2
...     return a
...
>>> dis.dis(foo)
  3           0 LOAD_FAST                0 (arg1)
              3 LOAD_FAST                1 (arg2)
              6 BINARY_ADD
              7 STORE_FAST               2 (a)

  4          10 LOAD_FAST                2 (a)
             13 RETURN_VALUE

inspect module具有从python对象检索源代码的方法。似乎只有当源位于文件中时它才起作用。如果你有这个,我想你不需要从物体上得到来源。

相关问题 更多 >