To print the source code of a Python object use inspect
. Note that this won't work for built-in objects nor for objects defined interactively. For these you will need other methods explained later.
Here's how to print the source code of the method randint
from the random
module:
import random
import inspect
print(inspect.getsource(random.randint))
# Output:
# def randint(self, a, b):
# """Return random integer in range [a, b], including both end points.
# """
#
# return self.randrange(a, b+1)
To just print the documentation string
print(inspect.getdoc(random.randint))
# Output:
# Return random integer in range [a, b], including both end points.
Print full path of the file where the method random.randint
is defined:
print(inspect.getfile(random.randint))
# c:\Python35\lib\random.py
print(random.randint.__code__.co_filename) # equivalent to the above
# c:\Python35\lib\random.py
If an object is defined interactively inspect
cannot provide the source code but you can use dill.source.getsource
instead
# define a new function in the interactive shell
def add(a, b):
return a + b
print(add.__code__.co_filename) # Output: <stdin>
import dill
print dill.source.getsource(add)
# def add(a, b):
return a + b
The source code for Python's built-in functions is written in c and can only be accessed by looking at the Python's source code (hosted on Mercurial or downloadable from https://www.python.org/downloads/source/).
print(inspect.getsource(sorted)) # raises a TypeError
type(sorted) # <class 'builtin_function_or_method'>