Python Language Accessing Python source code and bytecode Display the source code of an object


Objects that are not built-in

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

# 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

# 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:

# c:\Python35\lib\
print(random.randint.__code__.co_filename) # equivalent to the above
# c:\Python35\lib\

Objects defined interactively

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

Built-in objects

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

print(inspect.getsource(sorted)) # raises a TypeError
type(sorted) # <class 'builtin_function_or_method'>