What is the use of __name__ == “__main__” in Python?

I've seen `__name__ = "__main__"` in many Python scripts. What is its purpose and when should I use it?

Add Comment
1 Answer(s)
In Python programming, `__name__ == "__main__"` serves as an entry point to run scripts. Understanding it requires some familiarity with two special variables in Python: `__name__` and `__main__`. The `__name__` variable: Python files can act as reusable modules or as standalone programs. When you run a Python file, Python creates a special built-in variable called `__name__` for any module. If the module is the main program (i.e., the script you are directly running), Python sets this variable to `__main__`. If the file is being imported from another module, `__name__` gets set to the module's name. So, what does `if __name__ == "__main__": `do? This line checks if the module is being run directly or being imported. If the code is being run directly, then `__name__` is set to `__main__`, and the code under this `if` statement will get executed. If the file is being imported as a module to another program, then the `if` condition will be false and the code under this block won't get executed. This feature is particularly useful when developers write modules as it allows the module to be imported by other modules without running the entire script, but still permitting the script to be run independently for testing purposes. To illustrate, consider the following script `sample.py`: ```python def function(): print("Function executed.") print("Module name: " + __name__) if __name__ == "__main__": function() ``` When run directly with a command such as `python sample.py`, the output will be: ``` Module name: __main__ Function executed. ``` If `sample.py` is imported into another script, `function()` won't be called: ```python import sample ``` Over here the output will be: ``` Module name: sample ``` The output "Function executed." is omitted because `__name__` is not `__main__` in this case, indicating that `sample.py` is not the main program, but rather a module being imported by the main program. In conclusion, the use of `__name__ == "__main__"` acts as a Python idiom to identify whether the module is being used standalone or being imported elsewhere. This conditional allows certain code to be run when the module is being run standalone, primarily for tests, but prevents this code from being run when the module is imported from other scripts.
Answered on September 2, 2023.
Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.