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 purpose of the __init__.py file in a Python package?
The __init__.py file tells Python that the directory should be treated as a package. It can also initialize package-level variables or import submodules.
Click to reveal answer
beginner
True or False: Without an __init__.py file, Python cannot recognize a folder as a package.
False. Since Python 3.3+, folders without __init__.py can be treated as namespace packages.
Click to reveal answer
intermediate
Can __init__.py contain executable code? What is a common use for this?
Yes, __init__.py can contain executable code. A common use is to initialize package variables or import specific classes/functions to simplify access.
Click to reveal answer
beginner
What happens if __init__.py is empty?
If __init__.py is empty, the folder is still recognized as a package, but no initialization code runs.
Click to reveal answer
intermediate
How does __init__.py help with importing submodules in a package?
By importing submodules inside __init__.py, you can make them available directly when importing the package, making code cleaner and easier to use.
Click to reveal answer
What does the __init__.py file do in a Python folder?
ACompiles Python code
BRuns the main program
CDeletes the folder contents
DMarks the folder as a Python package
✗ Incorrect
The __init__.py file marks the folder as a package so Python can import from it.
Can __init__.py contain code that runs when the package is imported?
ANo, it must be empty
BYes, it can contain initialization code
COnly comments are allowed
DIt only contains variable declarations
✗ Incorrect
Yes, __init__.py can contain code that runs when the package is imported.
If __init__.py is missing, what happens when you try to import the folder as a package?
APython ignores the folder
BPython raises an ImportError
CPython treats it as a package anyway
DPython converts it to a module
✗ Incorrect
Since Python 3.3, without __init__.py, Python treats the folder as a namespace package.
How can __init__.py simplify importing submodules?
ABy importing submodules inside __init__.py
BBy compiling submodules
CBy renaming submodules
DBy deleting submodules automatically
✗ Incorrect
Importing submodules inside __init__.py allows users to access them directly from the package.
Is it mandatory to have __init__.py in Python 3.12+ packages?
ANo, but recommended for explicit packages
BNo, it is deprecated
CYes, always mandatory
DOnly for Python 2
✗ Incorrect
In modern Python, __init__.py is not strictly mandatory but recommended to explicitly mark packages.
Explain the role of the __init__.py file in a Python package.
Think about how Python knows a folder is a package.
You got /4 concepts.
Describe how __init__.py can be used to simplify imports in a package.
Consider how you want to access parts of a package easily.
You got /3 concepts.
Practice
(1/5)
1. What is the main role of a __init__.py file in a Python folder?
easy
A. To mark the folder as a Python package
B. To store global variables for the project
C. To execute the main program code
D. To compile Python files into bytecode
Solution
Step 1: Understand the purpose of __init__.py
The __init__.py file tells Python that the folder should be treated as a package.
Step 2: Differentiate from other file roles
It does not store global variables, run main code, or compile files; its role is to mark the folder as a package.
Final Answer:
To mark the folder as a Python package -> Option A
Quick Check:
__init__.py marks package = C [OK]
Hint: Remember: __init__.py means 'this is a package' [OK]
Common Mistakes:
Thinking it runs main program code
Confusing it with a config file
Assuming it compiles Python files
2. Which of the following is a correct way to create an empty __init__.py file in a package folder?
easy
A. Create a file named __init__.py with no content
B. Create a file named init.py with no content
C. Create a file named __init__.py with a main() function
D. Create a file named __init__.txt with no content
Solution
Step 1: Identify the exact filename required
The file must be named exactly __init__.py to mark the folder as a package.
Step 2: Confirm that it can be empty
The file can be empty; no code is required inside for it to work.
Final Answer:
Create a file named __init__.py with no content -> Option A
When import mypackage runs, the code inside __init__.py executes, printing 'Package imported'.
Step 2: Check subsequent import and function call
Then from mypackage import module imports the module, and print(module.greet()) prints 'Hello!'.
Final Answer:
Package imported
Hello! -> Option B
Quick Check:
Init runs first, then greet() output = A [OK]
Hint: Code in __init__.py runs on package import [OK]
Common Mistakes:
Assuming __init__.py code does not run
Mixing order of printed lines
Expecting ImportError without reason
4. You have a folder named utils with a file helper.py inside. You try to import helper using import utils.helper but get ModuleNotFoundError. What is the most likely cause?
medium
A. The helper.py file has syntax errors
B. The helper.py file is empty
C. You need to run Python with administrator rights
D. The utils folder is missing __init__.py
Solution
Step 1: Understand package import requirements
Python requires an __init__.py file in a folder to treat it as a package for imports like utils.helper.
Step 2: Identify cause of ModuleNotFoundError
If __init__.py is missing, Python does not recognize utils as a package, causing the error.
Final Answer:
The utils folder is missing __init__.py -> Option D
Quick Check:
Missing __init__.py causes import error = D [OK]
Hint: Always add __init__.py to folders for imports [OK]
Common Mistakes:
Blaming syntax errors without checking
Thinking admin rights affect imports
Assuming empty files cause import failure
5. You want to create a package shapes with subpackage polygons. You want importing shapes to automatically import polygons as well. How should you modify shapes/__init__.py to achieve this?
hard
A. Add import shapes.polygons inside shapes/__init__.py
B. Add import polygons inside shapes/__init__.py
C. Add from . import polygons inside shapes/__init__.py
D. Leave shapes/__init__.py empty; Python imports subpackages automatically
Solution
Step 1: Understand relative imports in packages
To import a subpackage inside a package's __init__.py, use relative import syntax like from . import polygons.
Step 2: Avoid absolute import inside the package
Using import polygons or import shapes.polygons may cause errors or circular imports; relative import is preferred.
Step 3: Confirm that empty __init__.py does not import subpackages
Python does not import subpackages automatically; explicit import is needed.
Final Answer:
Add from . import polygons inside shapes/__init__.py -> Option C
Quick Check:
Use relative import from . import polygons = A [OK]
Hint: Use relative import from . import subpackage in __init__.py [OK]