Udit Vashisht
Author: Udit Vashisht

If __name__ == '__main__' in Python

  • Aug. 23, 2019, 1:32 p.m.
  • 3 minutes read
If __name__ == '__main__' in Python

What does if __name__ == ‘__main__‘in python means?

In python, you must have come accross the following code :-

if __name__ == '__main__':

In this tutorial, we will learn in detail what does the above statement means. As per official documentation:

‘__main__‘ is the name of the scope in which top-level code executes. A module’s __name__ is set equal to ‘__main__‘ when read from standard input, a script, or from an interactive prompt.

It means that if any module/python file is running as the main program, it sets the special__name__ variable to have a value ‘__main__‘

Create a python file ‘module_one.py’ and type the following code:-

# module_one.py

print f'The name of module one is {__name__}' 

If you will run it. You will get the following output:-

The name of module one is __main__

However, if this module is imported in some other file or module, variable __name-- will be set as the name of the first module.

To make it clear, create another python file (module) called ‘module_two.py’ and import first module in it:-

# module_two.py

import module_one

Since, we have imported module_one in module_two.py, when we will run the second module, it will execute the first module and we will get the following output on running module_two.py:-

The name of module one is module_one

Since, now we are directly running module_two.py, Python will set it’s __name__ as ‘__main__‘

# module_two.py

import module_one

print f'The name of module two is {__name__}' 

Output of this module will be:-

The name of module one is module_one
The name of module two is __main__

Hence if __name__ == ‘__main__‘ checks whether the file is being run directly or it has been imported into some other file. The following example will make it more clear:-

# module_one.py

print "This will always be printed"

if __name__ == "__main__": 
    print "Module one has been run directly"
    print "Module one has been imported"
# Output
This will always be printed
Module one has been run directly

Now if we just import module_one in module_two.py and run it, we will get the following output.

# module_two.py
import module_one
# Output
This will always be printed
Module one has been imported

We use this if we want to make a certain function run, when a module is run directly and some other function to run if it is imported.

If you have any query, please feel free to ask in comment section.

Related Posts

Python Candlestick Chart | Matplotlib Tutorial | Chapter 11
By Udit Vashisht | 1 month, 3 weeks ago

Python Candlestick Chart in Matplotlib

Python Candlestick Chart | Chapter 11

A candlestick chart or Japanese candlestick chart is a financial chart used to depict the price movement of securities, derivatives etc. in financial market. In this tutorial we will use Python to plot Candlestick Chart.

A Candlestick Chart ...

Read More
Python object-oriented programming (OOP) - A complete tutorial
By Udit Vashisht | 1 month, 2 weeks ago

Python object-oriented programming (OOP)

Object-oriented programming

Object-oriented programming also known as OOP is a programming paradigm that is based on objects having attributes (properties) and procedures (methods). The advantage of using Object-oriented programming(OOP) is that it helps in bundling the attributes and procedures into objects or modules. We can ...

Read More
Scatter Plotting in Python | Matplotlib Tutorial | Chapter 7
By Udit Vashisht | 2 months, 1 week ago

Scatter Plots in Python using Matplotlib

Scatter Plotting in Python |Chapter 7

In this tutorial we will learn everything about plotting a scatter plot in Matplotlib using Python. We will be using matplotlib.pyplot()’s plt.scatter() to create the scatter plot in Matplotlib. You will find all ...

Read More