When you're new to Python, you might often see this line:
if __name__ == "__main__":
At first, it might seem cryptic, but once you understand it, you'll realize it's one of Python’s most useful features for writing clean, modular, and reusable code.
The __name__
Variable
Every Python file has a built-in variable called __name__
.
-
When a Python script is run directly, __name__
is set to "__main__"
.
-
When a Python file is imported as a module, __name__
is set to the module’s name.
Let's understand it with an example
FileName: HelloWorld.py
def greet():
print("Hello from HelloWorld.py!")
if __name__ == "__main__":
greet()
Case 1. Run directly
python HelloWorld.py
Output
Hello from HelloWorld.py!
Case 2. Import as a module
FileName: test.py
import HelloWorld
print("This is test.py")
If you import the above code in a module like
import HelloWorld
print("This is test.py")
It will generate output like
This is test.py.
Here greet()
is not called because the if __name__ == "__main__":
block is skipped when the file is imported.
Why Use It?
Using if __name__ == "__main__":
allows you to:
- Write code that can be used as a script and also imported as a module without side effects.
- Keep your code modular and reusable.
- Prevent certain code from running when the file is imported elsewhere.