Main Function in Python and how to use it?

Wajiha Urooj
Edureka
Published in
8 min readJun 6, 2019

Python is one of the most popular programming languages to learn. The main function in Python acts as the point of execution for any program. Defining the main function in Python programming is a necessity to start the execution of the program as it gets executed only when the program is run directly and not executed when imported as a module.

To understand more about python main function, let’s have a look at the topics that I will be covering in this article:

  • What are Python functions?
  • Main function in Python
  • A Basic Python main()
  • Python Execution modes

Let’s get started.

What are Python functions?

A function is a block of reusable code that forms the foundation of performing actions in a programming language. They are leveraged to perform computations on the input data and present the output to the end-user.

We have already learned that a function is a piece of code written to perform a specific task. There are three types of functions in Python namely Built-in function, user-defined functions, and anonymous functions. Now, the main function is like any other function in Python.

So let’s understand what exactly is the main function in Python.

Main Function in Python

In most programming languages, there is a special function that is executed automatically every time the program is run. This is nothing but the main function, or main() as it is usually denoted. It essentially serves as a starting point for the execution of a program.

In Python, it is not necessary to define the main function every time you write a program. This is because the Python interpreter executes from the top of the file unless a specific function is defined. Hence, having a defined starting point for the execution of your Python program is useful to better understand how your program works.

A Basic Python main()

In most Python programs/scripts, you might see a function definition, followed by a conditional statement that looks like the example shown below:

def main():
print("Hello, World!")
if __name__== "__main__" :
main()

In the above example, you can see, there is a function called ‘main()’. This is followed by a conditional ‘if’ statement that checks the value of __name__, and compares it to the string “__main__ “. On evaluation to True, it executes main().

And on execution, it prints “Hello, World!”.

This kind of code pattern is very common when you are dealing with files that are to be executed as Python scripts, and/or to be imported in other modules.

Let’s understand how this code executes. Before that, it’s very necessary to understand that the Python interpreter sets __name__ depending on the way how the code is executed. So, let’s learn about the execution modes in Python

Python Execution Modes

There are two main ways by which you can tell the Python interpreter to execute the code:

  • The most common way is to execute the file as a Python Script.
  • By importing the necessary code from one Python file to another.

Whatever the mode of execution you choose, Python defines a special variable called __name__, which contains a string. And as I said before, the value of this string depends on how the code is being executed.

Sometimes, when you are importing from a module, you would like to know whether a particular module’s function is being used as an import, or if you are just using the original .py ( Python script) file of that module.

To help with this, Python has a special built-in variable, called __name__. This variable gets assigned the string “__main__ “ depending on how you are running or executing the script.

So, if you are running the script directly, Python is going to assign “__main__” to __name__, i.e., __name__= “__main__”. (This happens in the background).

As a result, you end up writing the conditional if statement as follows:

if __name__ == "__main__" :
Logic Statements

Hence, if the conditional statement evaluates to True, it means, the .py (Python Script) file is being run or executed directly.

It is important to understand that, if you are running something directly on the Python shell or terminal, this conditional statement, by default, happens to be True.

As a result, programmers write all the necessary functional definitions on the top, and finally write this statement at the end, to organize the code.

In short, __name__ variable helps you to check if the file is being run directly or if it has been imported.

There are a few things you should keep in mind while writing programs that are going to have the main function. I have listed them in four simple steps. You can consider this as a good nomenclature to follow while writing Python programs that have the main function in them.

Use functions and classes wherever possible.

We have been learning the concepts of Object-Oriented Programming and their advantages for a long time. It is absolutely necessary to place bulk logic codes in compact functions or classes. Why? For better code reusability, better understanding, and overall code optimization. In this way, you can control the execution of the code, rather than letting the Python interpreter execute it as soon as it imports the module.

Let us see the following piece of code:

def get_got():
print("...Fetching GOT Data... n")
data="Bran Stark wins the Iron Throne. n"
print("...GOT Data has been fetched...n")
return data
print("n Demo: Using Functions n")
got=get_got()
print(got)

In the above example, I’ve defined a function called “ get_got “, which returns the string stored in the variable “data”. This is then stored in the variable called “got” which is then printed. I have written down the output below:

Use __name__ to control the execution of your code.

Now you know what __name__ variable is, how and why it is used. Let us look at the code snippet below:

if __name__ == "__main__":
got = "Game of Thrones is a legendary shown"
print(got)
new_got = str.split(got)
print(new_got)

In the above example, the conditional if the statement is going to compare the values of the variable __name__ with the string “__main__”. If, and only if it evaluates to True, the next set of logical statements are executed. Since we are directly running the program, we know that the conditional statement is going to be True. Therefore, the statements are executed, and we get the desired output. In this way, we can use the __name__ variable to control the execution of your code. You may refer to the output displayed below:

Create a function main() which has the code to be run.

By now, you know the various ways how a Python code can be executed. You also know why and when a main() function is used. It is time to apply it. Look at the following piece of code:

print("n Main Function Demo n")
def demo(got):
print("...Beginning Game Of Thrones...n")
new_got = str.split(got)
print("...Game of Thrones has finished...n")
return new_got
def main():
got= "n Bran Stark wins the Iron Throne n"
print(got)
new_got = demo(got)
print(new_got)
if __name__ == "__main__":
main()

In the above example, I have used the definition of main(), which contains the program logic I want to run. I’ve also defined a function called ‘demo’, to include a piece of code, that can be reused as and when necessary. Furthermore, I have changed the conditional block, such that, it executes main().

In this way, I put the code I want to run within main(), the programming logic in a function called ‘demo’, and called main() within the conditional block. I have assimilated the output of the code and written it down below for your easy reference:

Note: If you run this code as a script or if you import it, the output is going to be the same. You may look at the output below:

Call other functions from main().

When you write full-fledged Python programs, there could be numerous functions that could be called and used. More often than not, some functions should be called as soon as the execution of the program starts. Hence, it is always good to call other functions from the main() itself.

Let us look at below code fragment:

print("n Main Function Demo n")
def demo(got):
print("...Beginning Game Of Thrones Demo1...n")
new_got = str.split(got)
print("...Game of Thrones has finished...n")
return new_got
def getgot():
print("...Getting GOT Data...n")
got="Bran Stark wins the Iron Throne n"
print("...GOT Data has been returned...n")
return got
def main():
got= getgot()
print(got)
new_got = demo(got)
print(new_got)
if __name__ == "__main__":
main()

In the above example, I have defined a function called “ getgot()” to fetch the data. And this function is called from within the main() itself.

Hence, it is always good to call other functions from within the main() to compose your entire task from smaller sub-tasks, that can execute independently. I have also shared the output of the above code in the section below:

I hope you were able to go through this article and get a fair understanding of what the main() function in Python is all about, and how it can be used. With the help of main() function in Python, we can execute a ton of functionalities as and when needed, and also control the flow of execution.

If you wish to check out more articles on the market’s most trending technologies like Artificial Intelligence, DevOps, Ethical Hacking, then you can refer to Edureka’s official site.

Do look out for other articles in this series which will explain the various other aspects of Python and Data Science.

1. Machine Learning Classifier in Python

2. Python Scikit-Learn Cheat Sheet

3. Machine Learning Tools

4. Python Libraries For Data Science And Machine Learning

5. Chatbot In Python

6. Python Collections

7. Python Modules

8. Python developer Skills

9. OOPs Interview Questions and Answers

10. Resume For A Python Developer

11. Exploratory Data Analysis In Python

12. Snake Game With Python’s Turtle Module

13. Python Developer Salary

14. Principal Component Analysis

15. Python vs C++

16. Scrapy Tutorial

17. Python SciPy

18. Least Squares Regression Method

19. Jupyter Notebook Cheat Sheet

20. Python Basics

21. Python Pattern Programs

22. Web Scraping With Python

23. Python Decorator

24. Python Spyder IDE

25. Mobile Applications Using Kivy In Python

26. Top 10 Best Books To Learn & Practice Python

27. Robot Framework With Python

28. Snake Game in Python using PyGame

29. Django Interview Questions and Answers

30. Top 10 Python Applications

31. Hash Tables and Hashmaps in Python

32. Python 3.8

33. Support Vector Machine

34. Python Tutorial

Originally published at https://www.edureka.co on June 6, 2019.

--

--