// Tutorial //

Python main function

Published on August 3, 2022
Default avatar
By Pankaj
Developer and author at DigitalOcean.
Python main function

While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.

Python main function is executed only when it’s being executed as a python program. As you know, we can also import a python program as a module, in that case python main method should not execute.

Python main function

Main function is the entry point of any program. But python interpreter executes the source file code sequentially and doesn’t call any method if it’s not part of the code. But if it’s directly part of the code then it will be executed when the file is imported as a module. That’s why there is a special technique to define main method in python program, so that it gets executed only when the program is run directly and not executed when imported as a module. Let’s see how to define python main function in a simple program. python_main_function.py

print("Hello")

print("__name__ value: ", __name__)


def main():
    print("python main function")


if __name__ == '__main__':
    main()
  • When a python program is executed, python interpreter starts executing code inside it. It also sets few implicit variable values, one of them is __name__ whose value is set as __main__.

  • For python main function, we have to define a function and then use if __name__ == '__main__' condition to execute this function.

  • If the python source file is imported as module, python interpreter sets the __name__ value to module name, so the if condition will return false and main method will not be executed.

  • Python provides us flexibility to keep any name for main method, however it’s best practice to name it as main() method. Below code is perfectly fine, however not recommended.

    def main1():
        print("python main function")
    
    
    if __name__ == '__main__':
        main1()
    

Below image shows the output when python_main_function.py is executed as source file. python main function, python if name main

Python main function as module

Now let’s use above python source file as a module and import in another program. python_import.py

import python_main_function

print("Done")

Now when above program is executed, below output is produced. python main method, python if main

Hello
__name__ value:  python_main_function
Done

Notice that first two lines are getting printed from python_main_function.py source file. Notice the value of __name__ is different and hence main method is not executed. Notice that python program statements are executed line by line, so it’s important to define the main() method first before the if condition to execute main method. Otherwise you will get error as NameError: name 'main' is not defined. That’s all about python main function. Reference: Python Docs

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors
Default avatar
Pankaj

author

Developer and author at DigitalOcean.

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
JournalDev
DigitalOcean Employee
DigitalOcean Employee badge
July 26, 2021

Thanks so much for this breakdown. It was super clear and helpful for a begginer like myself.

- Nahuel Tamasso

    JournalDev
    DigitalOcean Employee
    DigitalOcean Employee badge
    April 18, 2021

    Still relevant. Thanks for the simple but elegant breakdown. I needed that and truly appreciate it.

    - Eric Webb

      JournalDev
      DigitalOcean Employee
      DigitalOcean Employee badge
      January 9, 2020

      Nice document. It will be helpful for a lot of beginners. Thanks

      - Kiran

        JournalDev
        DigitalOcean Employee
        DigitalOcean Employee badge
        September 15, 2019

        Very well explained .

        - RandomGoogler

          JournalDev
          DigitalOcean Employee
          DigitalOcean Employee badge
          April 26, 2019

          Very good explanation , keep it up

          - Hari Haran

            JournalDev
            DigitalOcean Employee
            DigitalOcean Employee badge
            March 26, 2019

            Well Done Pankaj, very well explained. So far this is the best one from desi !!!

            - Srinivas

              JournalDev
              DigitalOcean Employee
              DigitalOcean Employee badge
              December 19, 2017

              The best site with the best information I’ve ever found! Thousands of thanks!

              - Sensation Person

                Try DigitalOcean for free

                Click here to Sign up and get $200 of credit to try our products over 60 days!