Understanding the __name__ Variable in Python – TecAdmin

Channel: Linux
Abstract: block in script.py. This is because __name__ in script.py is no longer __main__ – it’s now scriptPython sets the __name__ variable to have a value of

The __name__ variable is a built-in attribute in Python, automatically initialized and assigned for each Python program. It’s one of those concepts that’s simple on the surface but has powerful implications. In this article, we’ll dive into what __name__ is, how it’s used, and the important role it plays in Python scripting.

The Basics

In Python, __name__ is a special system-defined variable. Python automatically assigns a string to this variable, depending on how you run your script. The assignment of this string works as follows:

  • If a script is being run directly: When you’re running your script directly from the command line, Python sets the __name__ variable to have a value of __main__.
  • If a script is being imported as a module: If your script is being imported into another script as a module, Python sets the __name__ variable to the name of the script/module being imported.

Let’s look at an example for better understanding.

# script.py

def hello_world():
    return "Hello, World!"

if __name__ == "__main__":

In this script, if you run it directly from the command line with python script.py, Python will execute the if __name__ == "__main__": block because __name__ is set to __main__.

However, if you were to import this script into another script:

# another_script.py

import script


…and run python another_script.py, Python will NOT execute the if __name__ == "__main__": block in script.py. This is because __name__ in script.py is no longer __main__ – it’s now script, the name of the module being imported.

Why is __name__ Useful?

You may be wondering why this functionality is useful. Here are a couple of primary reasons:

1. Testing Code

The __name__ == "__main__" check allows you to test your Python files. You can add test cases or print statements in this block. These lines will get executed when the file is run directly, but not when it’s imported as a module.

2. Organizing Code

You can also use __name__ == "__main__" to have a clear entry point for your program, much like the main() function in languages like C++ or Java. Any code you don’t want to run when your file is imported as a module, you can place inside the if __name__ == "__main__": block.


The __name__ variable in Python may seem complex, but it offers a powerful tool for structuring your Python scripts and modules. By understanding __name__, you can create Python files that behave differently based on whether they’re run directly or imported as modules, enabling cleaner and more organized code.

Ref From: tecadmin

Related articles