Saturday, December 28, 2024
Google search engine
HomeLanguagesHow to retrieve source code from Python objects?

How to retrieve source code from Python objects?

We are given a object and our task is to retrieve its source code, for this we have inspect module, dill module and dis module built-in standard libraries in Python programming. They provide several useful functions to track information about live objects such as modules, classes, methods, functions, tracebacks, frame objects, and code objects. getsource() method is used to get the source code of Python objects.

Syntax: inspect.getsource(object)

Parameter: The object type parameter, of which we want the source code.

Return type: text of the source code for an object

Note: An IOError is raised if the source code cannot be retrieved.

Using the inspect module to retrieve source code

Example: Here we are importing the inspect module first and then using the inspect.getsource() function to fetch the source code of the given object.

python3




# import inspect library
import inspect
 
def test(x):
    return x * 2
 
print(inspect.getsource(test))


Output:

def test(x):

   return (x+2)*(x-2)

Example: Here we are fetching the source code for the given object.

python3




# import inspect library
import inspect
 
 
def far(n):
    factorial = 1
    if int(n) >= 1:
        for i in range (1, int(n)+1):
            factorial = factorial * i
    return factorial
 
source = inspect.getsource(far)
print(source)


Output:

def far(n):
    factorial = 1
    if int(n) >= 1:
        for i in range (1, int(n)+1):
            factorial = factorial * i
    return factorial

Example: We can use inspect on built in library functions and objects also. 

python3




# import inspect library
import inspect
import pandas
 
 
source_DF = inspect.getsource(pandas.DataFrame)
print(source_DF[:100])


Output:

class DataFrame(NDFrame):
    """
    Two-dimensional size-mutable, potentially heterogeneous tabula

Using the dis module to retrieve source code

Here we are using the dis module in Python to fetch the source code of the specified object.

Python3




import dis
 
def fun(a1, a2):
    # do something with args
    a = a1 + a2
    return a
 
 
dis.dis(fun)


Output:

 50           0 LOAD_FAST                0 (a1)
              2 LOAD_FAST                1 (a2)
              4 BINARY_ADD
              6 STORE_FAST               2 (a)

 51           8 LOAD_FAST                2 (a)
             10 RETURN_VALUE

Using the dill module to retrieve source code

Here we are using the dill module in Python to fetch the source code of the specified object.

Python3




import dill
 
def fun(a1,a2):
    a = a1 + a2
    return a
 
source=dill.source.getsource(fun)
print(source[:200])


Output:

def fun(a1,a2):
    a = a1 + a2
    return a

RELATED ARTICLES

Most Popular

Recent Comments