Updated March 20, 2023
Introduction to Python Main function
In general, all the programming languages have a main() function as a pre-defined function/ method to indicate to the compiler that it is the beginning of the execution flow. Python language is an exception to this, as its execution is in a serial manner, and the first line of the code will be the starting point by default. Despite the main() function not being a mandatory element, if the programmer wishes to have the main method to sort the other parts of the code, one can always create a user-defined method, which will operate similar to other methods python.
How to declare the Python Main Function?
The main method is defined in a similar fashion to other functions defined in python.
1. Basic main function
print('Introduction to main() function')
def main():
print("This is main function")
print('Outside main function')
Output: demo.py
>>>
=== RESTART: C:/Users/hp/AppData/Local/Programs/Python/Python37-32/demo.py ===
Introduction to main() function
2. Outside main function
>>>
Explanation: Python interpreter starts executing a python file from the top. First, it will print the first print statement, i.e. Introduction to main() function. It finds the main() method definition since it’s a mere definition and not a function call, so it bypasses this and executes the next print statement that follows this.
Note: In python, it doesn’t necessarily name the ‘main’ method as main(). It could be defined with any valid identifier name like main1(), main(), etc.
Execution of main() requires a brief understanding of the __name__ variable.
3. Brief about __name__ variable
__name__ variable is a special implicit variable containing a string, and the string’s value depends on how the code is being executed.
Basically, there are two ways in which python interpreters execute code and __name_ this populates_ value.
a. The most common way is to execute the file as a python script
In this case __name__ will contain the string “__main__”
b. By importing the necessary code from one python file to another file.
In this case __name__ will contain the imported module name
__name__ variable helps to check if the python file is being run directly or if it has been imported from some other file.
Examples of Python Main Method
Following are some examples of python main method:
1. Sum function: File is saved as sum_numbers.py
Python file: sum_numbers.py
def sum(a,b):
return (a+b)
print(sum(3,6))
print("__name variable set to ",__name__)
The above program is the main program and is not imported from other python files, so the value of __name__ variable is set to __main__ as shown in the output below:
Output: sum_numbers.py
2. When a python file is imported from another file
This file is saved as sum.py
Python file: sum.py
import sum_numbers
print(sum_numbers.sum(10.25,9.05))
print("value of __name__:",__name__)
Explanation:
- Sum_numbers file is being imported in program file ‘sum.py’, so all the statements inside this are executed first.
i.e print(sum(3,6)) à 9
print(“__name variable set to “,__name__) à since this is being imported from sum_numbers so __name__ is set to sum_numbers
- print(sum_numbers.sum(10.25,9.05)) à3
print(“value of __name__:”,__name__) à sum.py is main file here so __name__ is set to __main__.
Output: sum.py
To avoid the statements to get executed from the imported file ‘sum_numbers’ like in this case, we can use if conditional statements.
The below code example can illustrate this:
The above sum_numbers.py python file can be changed as below:
Python file: sum_numbers.py
def sum(a,b):
return (a+b)
if __name__=='__main__':
print(sum(3,6))
print("__name variable set to ",__name__)
Python file: sum.py
import sum_numbers
print(sum_numbers.sum(10.25,9.05))
print("value of __name__:",__name__)
In this case, output from imported file ‘sum_numbers.py’ is not printed when we execute sum.py because of this condition:
if __name__==’__main__’:
as this condition fails because sum_numbers is the imported module and not the main file.
Output: sum.py
Key points to consider when main() is being used in the python program:
1. As python is an object-oriented programming language, we should incorporate its benefits into our program. This can be done by placing bulk logic codes in compact functions and/or classes for better code reusability, better debugging, a better understanding of the program and overall code optimization.
This approach will enable us to control our code’s execution rather than letting the python interpreter execute it.
This is best illustrated in the above code example, where we used if condition to prevent the output from the imported file.
2. Use __name__ variable to control the execution of code
If __name__=='__main__:
<logic of program>
3. Create main() function and put your logic inside this
Python file: demo.py
print("Main function illustration")
def sum(a,b):
return (a+b)
def main():
print("Inside main() function")
x=int(input("enter value x"))
y=int((input("enter value y")))
print("sum of values entered is",end=' ')
print(sum(x,y))
if __name__ == "__main__":
main()
- Here we have defined sum() and main().
- Sum() will calculate the sum of two numbers,
- Inside the main() method, we have prompted the user to enter values for x and y through the input() statement, which is then converted to integer values as input() returns string values.
- Then sum(x,y) is called inside the main function, and control will transfer to the sum() method defined at the top, which will return the sum of the user’s numbers.
- All the above functionalities are handled by the __name__ variable.
- As demo.py is the main program file and is not being imported from any other python file, so __name__ is set to string __main__.
- If there have been some import statements, then the below condition
If __name__ == “__main__”:
will fail as __name__ now will have the imported module name
In this way, I put the code which I wanted to run inside main(), programming logic in “SUM”, which is being called from main() and called the main() within the conditional statement.
Output: demo.py
Conclusion – Python Main Method
Well, it’s not necessary to use the main() method in python, and it’s completely up to the programmer whether to have it in the code or not. However, it is good practice to use the main() method because with the help of the main() function; we can execute a ton of functionalities as and when needed and also control the flow of execution.
Recommended Article
This is a guide to Python Main Method. Here we discuss how to declare the Python Main Function along with the Examples and Outputs. You may also look at the following article to learn more –