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
✗ Incorrect
When imported, __name__ is set to the module's name, usually the filename without the .py extension.
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
✗ Incorrect
Code inside this block runs only when the script is executed directly, not when imported.
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
✗ Incorrect
This condition ensures code runs only when the script is the main program, not when imported.
If you run a Python script directly, what will print(__name__) output?
AThe script's filename
B"__main__"
CAn error
DNothing
✗ Incorrect
When run directly, __name__ is set to "__main__".
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
✗ Incorrect
It allows the file to be imported without running main code, and also run as a standalone script.
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
Step 1: Understand the role of __name__
When a Python file runs directly, __name__ is set to the string "__main__".
Step 2: Differentiate direct run vs import
If the file is imported, __name__ is the module's name, not "__main__".
Final Answer:
"__main__" -> Option C
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
Step 1: Check correct variable and string
The variable is __name__ and the string to compare is "__main__".
Step 2: Verify syntax correctness
Use double equals == for comparison, and colons to start the block.
Final Answer:
if __name__ == '__main__': -> Option A
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
Step 1: Check if condition when run directly
Since the file runs directly, __name__ == '__main__' is True, so greet() is called.
Step 2: Understand greet() function output
The function prints "Hello!" once.
Final Answer:
Hello! -> Option D
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
Step 1: Check the if condition syntax
The condition uses single equals (=) which is assignment, not comparison, causing SyntaxError.
Step 2: Confirm function and indentation
The function main() is defined correctly and indentation is fine.
Final Answer:
SyntaxError due to single equals (=) in if condition -> Option B
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
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.
Step 2: Check what runs in file2.py
Only print('In file2') runs, so output is just "In file2".
Final Answer:
In file2 -> Option A
Quick Check:
Import skips main block, prints only file2 message [OK]
Hint: Imported file skips if __name__ == '__main__' block [OK]