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
Package structure and usage
📖 Scenario: You are organizing a small Python project into packages to keep your code clean and easy to use. You will create a package with modules and use them in a main script.
🎯 Goal: Build a simple Python package with two modules and use functions from those modules in a main script.
📋 What You'll Learn
Create a package folder named mypackage with an __init__.py file
Create two modules inside mypackage: module1.py and module2.py
Write one function in each module: greet() in module1.py and farewell() in module2.py
Import and use these functions in a main script main.py
💡 Why This Matters
🌍 Real World
Organizing code into packages helps keep projects clean and makes code reusable across different programs.
💼 Career
Understanding package structure is essential for working on larger Python projects and collaborating with other developers.
Progress0 / 4 steps
1
Create package folder and modules
Create a folder named mypackage. Inside it, create an empty file named __init__.py. Then create two files inside mypackage: module1.py and module2.py. In module1.py, write a function called greet that returns the string 'Hello from module1'. In module2.py, write a function called farewell that returns the string 'Goodbye from module2'.
Python
Hint
Remember, __init__.py can be empty but it tells Python this folder is a package.
2
Create main script and import functions
Create a file named main.py outside the mypackage folder. In main.py, import the greet function from mypackage.module1 and the farewell function from mypackage.module2.
Python
Hint
Use the syntax from package.module import function to import.
3
Use imported functions in main.py
In main.py, call the greet() function and store its result in a variable named hello_message. Call the farewell() function and store its result in a variable named bye_message.
Python
Hint
Just call the functions and assign their return values to variables.
4
Print the messages
In main.py, print the variables hello_message and bye_message on separate lines.
Python
Hint
Use two print statements, one for each message.
Practice
(1/5)
1. What is the main purpose of the __init__.py file in a Python package?
easy
A. To mark a directory as a Python package
B. To execute the main program
C. To store global variables
D. To compile Python files
Solution
Step 1: Understand the role of __init__.py
The __init__.py file tells Python that the directory should be treated as a package.
Step 2: Differentiate from other options
It does not execute the main program, store global variables, or compile files; its main role is package identification.
Final Answer:
To mark a directory as a Python package -> Option A
Quick Check:
__init__.py marks packages [OK]
Hint: Remember: __init__.py makes folder a package [OK]
Common Mistakes:
Thinking __init__.py runs main code automatically
Confusing it with a script file
Assuming it compiles Python files
2. Which of the following is the correct way to import the module utils from a package named mypackage?
easy
A. import mypackage.utils
B. from utils import mypackage
C. import utils.mypackage
D. from mypackage import utils
Solution
Step 1: Recall Python import syntax for packages
To import a module from a package, use from package_name import module.
Step 2: Match syntax to options
from mypackage import utils matches this syntax: from mypackage import utils.
Final Answer:
from mypackage import utils -> Option D
Quick Check:
Import module with 'from package import module' [OK]
Hint: Use 'from package import module' to import modules [OK]
Common Mistakes:
Reversing package and module names
Using incorrect import order
Trying to import module as package
3. Given this package structure:
mypackage/
__init__.py
math_ops.py
string_ops.py
And this code:
from mypackage import math_ops
print(math_ops.add(2, 3))
If math_ops.py contains a function def add(a, b): return a + b, what is the output?
medium
A. None
B. TypeError
C. 5
D. NameError
Solution
Step 1: Understand the import and function call
The code imports math_ops from mypackage and calls math_ops.add(2, 3).
Step 2: Evaluate the function output
The function add returns the sum of 2 and 3, which is 5.
Final Answer:
5 -> Option C
Quick Check:
2 + 3 = 5 [OK]
Hint: Trace function call and return value carefully [OK]
Common Mistakes:
Forgetting to call the function with parentheses
Confusing module and function names
Assuming import fails without __init__.py content
4. You have a package folder named tools with modules calc.py and format.py. You try to run:
from tools import calc
print(calc.multiply(4, 5))
But get ModuleNotFoundError. What is the most likely cause?
medium
A. Function multiply does not exist in calc.py
B. Missing __init__.py file in the tools folder
C. Syntax error in import statement
D. Python version is too old
Solution
Step 1: Understand ModuleNotFoundError cause
This error often means Python does not recognize the folder as a package.
Step 2: Check package structure requirements
Without __init__.py, Python won't treat 'tools' as a package, causing import failure.
Final Answer:
Missing __init__.py file in the tools folder -> Option B
Hint: Always add __init__.py to package folders [OK]
Common Mistakes:
Assuming function absence causes ModuleNotFoundError
Ignoring package folder structure
Blaming Python version without checking files
5. You want to create a package datautils with submodules clean.py and transform.py. You want users to import clean_data function directly from datautils like this:
from datautils import clean_data
Which code should you add to datautils/__init__.py to enable this?
hard
A. from .clean import clean_data
B. import clean_data from clean
C. from clean import clean_data
D. import clean.clean_data
Solution
Step 1: Understand relative imports in packages
Inside __init__.py, use relative import with dot: from .clean import clean_data.
Step 2: Confirm correct syntax for exposing functions
This syntax makes clean_data available directly from datautils.
Final Answer:
from .clean import clean_data -> Option A
Quick Check:
Use 'from .module import func' in __init__.py [OK]
Hint: Use relative import with dot in __init__.py [OK]
Common Mistakes:
Using absolute import without dot inside __init__.py
Wrong import syntax like 'import clean_data from clean'