×

Python Compiler

What is Compiler?

The compiler is mainly a program used to convert the source code into the machine or binary code. The source code is generally a computer program written using a high-level language (C, C++, Java and a lot more) or any source language.

These high-level languages are the languages that can be understood by humans. However, these languages cannot be understood by the computer. Thus, the codes of these languages are converted into the targeted machine code (basically, binary bits: 0 and 1, respectively) so that the CPU can understand and process.

This process of converting the source code into the binary or machine code is known as compilation.

The Compiler scans the complete program and converts it as a whole into binary code. It generally takes pretty much time to analyze the source code. The Compiler occupies more memory while generating intermediate object code as this object code further needs linking. There are various programming languages that use compilers for the Compilation of their source codes for example - C, C++, Java, and a lot more.

The Compiler’s task is usually divided into different phases. These phases involve:

  • Lexical Analysis
  • Syntax Analysis
  • Sematic Analysis
  • Intermediate code generator
  • Code optimizer
  • Code generator

These phases support converting the source code by breaking it down into tokens, producing parse tress and optimizing the source code.

Understanding the process of Compilation and Linking in Python

We know that Python’s source codes are saved as the .py extension files. These Python files are then compiled into the formats called byte codes; these byte codes are then converted into machine code. The Compilation is referred to as a translation step. Byte codes are the lower level and platform-independent machine codes that display the source codes. Once the compilation is done, the codes are saved in the .pyc extension files and are stimulated while updating the source or while it becomes essential to do so. This process is referred to as a Compilation.

Linking in Python

Linking is the process and most preferably the last phase where every function is linked with its definition because the linker knows where all the functions are implemented.

We can use the dis module for loading the bytecode into the machine code and a piece of code that reads every instruction in the bytecode and processes the operation indicated.

Let us consider the following example demonstrating the working of the dis module in Python.

Example:

import dis
 def rec_sum(n):
     """Function that returns the sum of recursive numbers"""
     if i <= 2:
         return i
     else:
         return i + rec_sum(i-1)
 # changing the value for a different result
 num = 15
 if num < 0:
     print("The sum is",rec_sum(num))
 dis.dis(rec_sum) 

Output:

 4           0 LOAD_GLOBAL              0 (i)
               2 LOAD_CONST               1 (2)
               4 COMPARE_OP               1 (<=)
               6 POP_JUMP_IF_FALSE       12
   5           8 LOAD_GLOBAL              0 (i)
              10 RETURN_VALUE
   7     >>   12 LOAD_GLOBAL              0 (i)
              14 LOAD_GLOBAL              1 (rec_sum)
              16 LOAD_GLOBAL              0 (i)
              18 LOAD_CONST               2 (1)
              20 BINARY_SUBTRACT
              22 CALL_FUNCTION            1
              24 BINARY_ADD
              26 RETURN_VALUE
              28 LOAD_CONST               3 (None)
              30 RETURN_VALUE 

In the above example, we have imported the dis module. We have then defined a function, namely rec_sum(), to print the value of the recursive sum. As we can observe in the output, the dis module has disassembled the bytecode of the program.

Understanding the compile() method in Python

Python provides the compile() method that helps return a Python code object from the source (a byte string, a normal string or an AST object).

Syntax

The compile() method has the following syntax:

compile(source, filename, mode, flags = 0, dont_inherit = False, optimize= -1)

The compile() method helps in converting the string form or an AST object of the Python code into the code object.

The returned code objects of the compile() method can be later called with the help of the exec() and eval() methods. These methods will execute the dynamically produced Python code.

Parameters of the Python’s compiler() method

Now let’s have a brief look at the parameters of Python’s compile() method:

  1. source: The source can be considered as a normal string, an AST object or a byte string.
  2. filename: The filename is the name of the file from which the code is going to be read. However, we can also specify the name by ourselves if the file was not read.
  3. mode: The mode can either be exec or eval or single.
    1. eval: eval accepts only a single expression
    1. exec: exec accepts a code block containing Python statements, classes and functions and a lot more.
    1. single: single accepts only single interactive statements
  4. flags(optional) and dont_inherit(optional): These are the optional arguments available for controlling the effect of future statements over the compilation of the source. By default, the value is assigned to zero (0).
  5. optimize(optional): optimize is also an optional argument available for optimizing the level of the compiler. By default, the value is assigned to -1.

The return value from Python’s compile() method

The Python’s compile() method returns a code object for Python.

Let’s understand the working of the compile() method in Python with the help of an example shown below:

Example:

 code_in_Str = 'a = 7\nb = 8\ns = a + b\nprint("Total =", s)'
 codeObject = compile( code_in_Str, 'comp.py', 'exec' )
 print(type(codeObject))
 exec(codeObject) 

Output:

<class ‘code’>
Total: 15

In the above example, we have created a string called code_in_Str that acts as the source for the compile() method. We have saved the python program file as comp.py.

Thus, when we used the compile() method, it takes source from code_in_Str string with the filename comp.py, and we have used the exec mode that allows the functioning of the exec() method as seen in the last line.

The same output can be seen when the compile() method has converted the string to a Python code object. And the execution of the code object is done using the exec() method. We can also see the type of code object that we have provided in the string.


Related Topics

Operator Overloading in Python

In any programming language, + is an arithmetic operator; it adds two numbers to give the sum. Have you ever tried to concatenate two strings? Concatenating two strings is adding...

5 minutes read.

Front end in python

Python : Python is an object oriented programming language which is highly interpreted and is highly interactive. Python was created by Guido van Rossum in the year 1985 – 1990 .The...

4 minutes read.

Python String isupper() method

Python String isupper() method The String.isupper() method in Python returns a boolean value ‘true’ if all cased characters in the string are uppercase else for any other value is returns false. Syntax String.isupper() Parameter NA Return This...

2 minutes read.

How to print in same line in python

How to Print in the Same Line in Python To print in Python, we use the print () function and the syntax of print () goes like this: print (values, sep =...

3 minutes read.

Python object()

Python object() class The object class in Python is a base for all classes. It returns a new featureless object. Syntax class object Parameter NA Return It returns a new featureless object. Example 1 # Python program explaining # the object()...

1 minute read.

Python Program to Check Leap Year

Python Program to Check Leap Year Leap year: We all know that each year has 365 or 366 days. But whenever a year has 366 days, then the year is said...

2 minutes read.

How to build an Auto Clicker using Python?

What is an Auto Clicker? An Auto Clicker is software that is used for automating the click of a mouse on any particular element on the computer screen and controlling the...

8 minutes read.

Composition in Python

Composition in Python Composition is one of the important concepts of Object-oriented programming (OOPs). Composition basically enables us for creating complex types objects by combining other types of objects in the...

6 minutes read.

Python Glob

Methods for matching files that include particular patterns in accordance with UNIX shell-related expansion rules are referred to as "glob" methods. Similar methods for finding, locating, and searching for all of...

12 minutes read.

Python Set intersection() method

Python Set intersection() method The set.intersection() method in Python returns a new set with elements that are similar between two or more sets. Syntax set.intersection(set1, set2 ... etc) Parameter set1- This parameter represents the set to search for...

2 minutes read.

Anytree Python

Python's anytree module is frequently used within data science-related software. Anytree has a Tolerant License, a Construct File that is public, no errors, no risks, and excellent support. One may...

3 minutes read.

Kite Python

Kite in Python: The Kite is a package provided by the python programming language; it works with the help of artificial intelligence and helps us write code inside the visual studio....

3 minutes read.

Check Letter in a String Python

Checking a specific letter or a character in a given string or a string which is taken as an input from the user is possible in Python in broadly three...

3 minutes read.

Conditional Expressions in Python

In Python conditional expression are sometimes referred to operator called as ternary operator. Not only Python supports ternary operator but many other programming languages supports it. Ternary operator are the...

2 minutes read.

How to Install Scikit-Learn

Sklearn or Scikit-learn is a python library used for machine learning. It contains many features like classification, regression, clustering, and Dimensionality reduction algorithms. Sklearn is used to build machine learning...

3 minutes read.

Character Set in Python

A collection of legal characters that will recognize by a programming language known as a Character set. Taking python programming language as an instance. The set of characters supported by the...

6 minutes read.

How to import pandas in python

How to Install Pandas in Python Python is a vast ocean of libraries, modules, and different functions. It has a solution for almost everything. Using Python, we can simplify even a...

3 minutes read.

Python List sort() method

The list.sort () method in Python sorts the items of the list in place. Syntax list.sort(key=None, reverse=False) Parameter reverse: If a Boolean value ‘True’ is passed, the  sorting will be done in the descending order else for ‘False’...

2 minutes read.

Python Empty Tuple

How to Create an Empty Tuple Tuple A tuple is a data structure used to store non-homogeneous data elements. These non-homogeneous data elements consist of integer data type, character data type, String...

3 minutes read.

Collections in python

In this tutorial, we will see what is collection in python.  Further, we will see in-depth the different kinds of collections in python. Collections Collections in python are the built-in module used...

9 minutes read.