Bird
Raised Fist0
Pythonprogramming~5 mins

__name__ and __main__ behavior in Python - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is the value of __name__ when a Python script is run directly?
When a Python script is run directly, the value of __name__ is "__main__". This means the script is the main program being executed.
Click to reveal answer
beginner
What does the condition if __name__ == "__main__": do in a Python script?
This condition checks if the script is being run directly (not imported). If true, the code inside the block runs. It helps separate code that should only run when the script is the main program.
Click to reveal answer
beginner
What is the value of __name__ when a Python file is imported as a module?
When a Python file is imported as a module, __name__ is set to the module's name (usually the filename without .py). It is not "__main__".
Click to reveal answer
intermediate
Why is using if __name__ == "__main__": useful in Python scripts?
It allows the script to be used both as a reusable module and as a standalone program. Code inside this block runs only when the script is executed directly, preventing it from running during import.
Click to reveal answer
beginner
Example: What will this code print if saved as example.py and run directly?
print(__name__)
if __name__ == "__main__":
    print("Running directly")
Output will be:
__main__
Running directly

Because the script runs directly, __name__ is "__main__" and the condition is true.
Click to reveal answer
What does __name__ equal when a Python file is imported as a module?
A"__main__"
BNone
CThe module's filename without .py
DAn empty string
What happens to code inside if __name__ == "__main__": when the script is imported?
AIt runs immediately
BIt causes an error
CIt runs only if called explicitly
DIt does not run automatically
Why do Python programmers use if __name__ == "__main__":?
ATo run code only when script runs directly
BTo prevent syntax errors
CTo run code only when imported
DTo define global variables
If you run a Python script directly, what will print(__name__) output?
AThe script's filename
B"__main__"
CAn error
DNothing
What is the main benefit of using if __name__ == "__main__": in a Python file?
ATo allow the file to be both a module and a script
BTo make the script run faster
CTo avoid import errors
DTo automatically run tests
Explain what __name__ and __main__ mean in a Python script and why they are important.
Think about how Python knows if a file is run directly or imported.
You got /4 concepts.
    Describe a real-life scenario where using if __name__ == '__main__': helps in organizing Python code.
    Imagine you want to share functions but also test them in the same file.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the special variable __name__ contain when a Python file is run directly?
      easy
      A. The file's directory path
      B. The file's extension
      C. "__main__"
      D. The Python version

      Solution

      1. Step 1: Understand the role of __name__

        When a Python file runs directly, __name__ is set to the string "__main__".
      2. Step 2: Differentiate direct run vs import

        If the file is imported, __name__ is the module's name, not "__main__".
      3. Final Answer:

        "__main__" -> Option C
      4. Quick Check:

        __name__ = "__main__" when run directly [OK]
      Hint: Direct run sets __name__ to "__main__" [OK]
      Common Mistakes:
      • Thinking __name__ holds file path
      • Confusing __name__ with Python version
      • Assuming __name__ is always module name
      2. Which of the following is the correct syntax to run code only when a Python file is executed directly?
      easy
      A. if __name__ == '__main__':
      B. if __main__ == '__name__':
      C. if main == '__name__':
      D. if __name__ = '__main__':

      Solution

      1. Step 1: Check correct variable and string

        The variable is __name__ and the string to compare is "__main__".
      2. Step 2: Verify syntax correctness

        Use double equals == for comparison, and colons to start the block.
      3. Final Answer:

        if __name__ == '__main__': -> Option A
      4. Quick Check:

        Correct syntax uses == and exact names [OK]
      Hint: Use if __name__ == '__main__': exactly [OK]
      Common Mistakes:
      • Using single equals (=) instead of double (==)
      • Swapping __name__ and __main__
      • Missing colon at end of if statement
      3. What will be the output when running this Python file directly?
      def greet():
          print('Hello!')
      
      if __name__ == '__main__':
          greet()
      medium
      A. Hello! Hello!
      B. No output
      C. Error: greet() undefined
      D. Hello!

      Solution

      1. Step 1: Check if condition when run directly

        Since the file runs directly, __name__ == '__main__' is True, so greet() is called.
      2. Step 2: Understand greet() function output

        The function prints "Hello!" once.
      3. Final Answer:

        Hello! -> Option D
      4. Quick Check:

        Function called once prints "Hello!" [OK]
      Hint: Direct run triggers greet() printing once [OK]
      Common Mistakes:
      • Thinking greet() runs twice
      • Assuming no output without main guard
      • Confusing function call with definition
      4. Identify the error in this code snippet:
      def main():
          print('Running main')
      
      if __name__ = '__main__':
          main()
      medium
      A. IndentationError in function definition
      B. SyntaxError due to single equals (=) in if condition
      C. NameError because main() is undefined
      D. No error, code runs fine

      Solution

      1. Step 1: Check the if condition syntax

        The condition uses single equals (=) which is assignment, not comparison, causing SyntaxError.
      2. Step 2: Confirm function and indentation

        The function main() is defined correctly and indentation is fine.
      3. Final Answer:

        SyntaxError due to single equals (=) in if condition -> Option B
      4. Quick Check:

        Use == for comparison, not = [OK]
      Hint: Use == in if condition, not = [OK]
      Common Mistakes:
      • Using = instead of ==
      • Assuming function undefined error
      • Ignoring indentation correctness
      5. You have two Python files:
      # file1.py
      def greet():
          print('Hi from file1')
      
      if __name__ == '__main__':
          greet()
      
      # file2.py
      import file1
      print('In file2')

      What will be the output when you run file2.py?
      hard
      A. In file2
      B. No output
      C. Hi from file1
      D. Hi from file1 In file2

      Solution

      1. Step 1: Understand import behavior with __name__

        When file1 is imported, its __name__ is "file1", not "__main__", so greet() inside the if block does NOT run.
      2. Step 2: Check what runs in file2.py

        Only print('In file2') runs, so output is just "In file2".
      3. Final Answer:

        In file2 -> Option A
      4. Quick Check:

        Import skips main block, prints only file2 message [OK]
      Hint: Imported file skips if __name__ == '__main__' block [OK]
      Common Mistakes:
      • Assuming greet() runs on import
      • Expecting both prints always
      • Confusing __name__ values on import