How can I get the source code of a Python function?
If the function is from a source file available on the filesystem, then inspect.getsource(foo)
might be of help:
If foo
is defined as:
def foo(arg1,arg2): #do something with args a = arg1 + arg2 return a
Then:
import inspectlines = inspect.getsource(foo)print(lines)
Returns:
def foo(arg1,arg2): #do something with args a = arg1 + arg2 return a
But I believe that if the function is compiled from a string, stream or imported from a compiled file, then you cannot retrieve its source code.
The inspect module has methods for retrieving source code from python objects. Seemingly it only works if the source is located in a file though. If you had that I guess you wouldn't need to get the source from the object.
The following tests inspect.getsource(foo)
using Python 3.6:
import inspectdef foo(arg1,arg2): #do something with args a = arg1 + arg2 return asource_foo = inspect.getsource(foo) # foo is normal functionprint(source_foo)source_max = inspect.getsource(max) # max is a built-in functionprint(source_max)
This first prints:
def foo(arg1,arg2): #do something with args a = arg1 + arg2 return a
Then fails on inspect.getsource(max)
with the following error:
TypeError: <built-in function max> is not a module, class, method, function, traceback, frame, or code object