Python

__name__ (A Special variable) in Python

In this tutorial, you will learn __name__ (A Special variable) in Python.

Python is a versatile and powerful programming language known for its simplicity and readability. One of the unique features of Python is the __name__ variable, which plays a crucial role in determining how a Python script behaves when it’s executed. In this blog post, we’ll delve into the __name__ variable, explore its significance, and demonstrate its practical applications through code examples.

What is the __name__ Variable?

The __name__ variable is a built-in Python variable that exists in every Python module. It serves as a flag that tells us whether the Python script is being run as the main program or if it is being imported as a module into another script. In other words, it helps us distinguish between the roles of the current script.

Here’s the general idea:

  • When a Python script is executed directly (as the main program), the __name__ variable is set to "__main__".
  • When a Python script is imported as a module into another script, the __name__ variable is set to the name of the script/module.

Let’s explore this concept further with some practical examples.

Example 1: Using __name__ to Execute Code Conditionally

Suppose we have a Python script named my_module.py, and we want to define some functions in it but also execute some code when it’s run directly.

# my_module.py

def greet(name):
    return f"Hello, {name}!"

if __name__ == "__main__":
    # This code block will only run if the script is executed directly.
    user_name = input("Enter your name: ")
    print(greet(user_name))

In this example, the greet function is defined in the my_module script. However, we want to allow users to input their name and display a greeting message only when my_module.py is run directly. The if __name__ == "__main__": condition helps achieve this. When the script is executed directly, this condition evaluates to True, and the code block beneath it runs.

If we import my_module into another script, the if __name__ == "__main__": block won’t run, allowing us to use the greet function without the input prompt.

Example 2: Using __name__ for Testing

The __name__ variable is also commonly used for testing purposes. Consider a scenario where you have a script that defines various functions, and you want to test those functions individually.

# math_operations.py

def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

if __name__ == "__main__":
    # Testing the functions when the script is executed directly.
    print(add(5, 3))
    print(subtract(10, 7))


In this case, when you run math_operations.py directly, it executes the tests. However, if you import math_operations into another script, you can still access and use the add and subtract functions for your calculations without triggering the tests.

Conclusion

The __name__ variable is a powerful tool in Python that allows you to create reusable modules and scripts with conditional behavior. By using if __name__ == "__main__":, you can control what code gets executed when a script is run directly or imported as a module. This feature promotes code organization and reusability, making Python a versatile language for various programming tasks.

About the Author: Anup Maurya

“Everything you can imagine is real.”