Bird
Raised Fist0
Pythonprogramming~20 mins

Package structure and usage in Python - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
Package Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of importing a submodule
Consider this package structure:

mypackage/
  __init__.py
  module_a.py
  subpackage/
    __init__.py
    module_b.py

In module_b.py, there is a function def greet(): return 'Hello from B'.

What is the output of this code?

from mypackage.subpackage import module_b
print(module_b.greet())
Python
from mypackage.subpackage import module_b
print(module_b.greet())
AModuleNotFoundError
BAttributeError
CImportError
DHello from B
Attempts:
2 left
💡 Hint
Think about how Python imports functions from submodules inside packages.
Predict Output
intermediate
2:00remaining
Effect of __init__.py on package import
Given this package structure:

mypackage/
  __init__.py
  utils.py

and __init__.py contains:
from .utils import helper

and utils.py contains:
def helper():
    return 'Helping'

What is the output of this code?

import mypackage
print(mypackage.helper())
Python
import mypackage
print(mypackage.helper())
AHelping
BAttributeError
CImportError
DNameError
Attempts:
2 left
💡 Hint
Check what __init__.py exposes when importing the package.
🔧 Debug
advanced
2:00remaining
Why does this import fail?
You have this package structure:

mypackage/
  __init__.py
  tools.py


In tools.py you have:
def tool():
    return 'Tool here'


You run this code from outside the package folder:

from mypackage import tool
print(tool())


But it raises an error. What is the error?
Python
from mypackage import tool
print(tool())
AAttributeError
BImportError
CModuleNotFoundError
DNameError
Attempts:
2 left
💡 Hint
Check what names are exposed by mypackage when importing.
📝 Syntax
advanced
2:00remaining
Correct relative import syntax inside a package
Inside mypackage/subpackage/module_c.py, you want to import func from mypackage/module_a.py.

Which import statement is correct?
Afrom ..module_a import func
Bfrom .module_a import func
Cimport module_a.func
Dfrom mypackage.module_a import func
Attempts:
2 left
💡 Hint
Think about how many levels up you need to go to reach module_a.
🚀 Application
expert
2:00remaining
Number of modules loaded after import
Given this package structure:

mypackage/
  __init__.py
  alpha.py
  beta.py
  gamma/
    __init__.py
    delta.py


Where:
- __init__.py in mypackage imports alpha and gamma
- __init__.py in gamma imports delta

What is the total number of distinct modules loaded into memory after running:

import mypackage
Python
import mypackage
A3
B1
C4
D2
Attempts:
2 left
💡 Hint
Count the modules explicitly imported during the package import.

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

  1. Step 1: Understand the role of __init__.py

    The __init__.py file tells Python that the directory should be treated as a package.
  2. 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.
  3. Final Answer:

    To mark a directory as a Python package -> Option A
  4. 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

  1. Step 1: Recall Python import syntax for packages

    To import a module from a package, use from package_name import module.
  2. Step 2: Match syntax to options

    from mypackage import utils matches this syntax: from mypackage import utils.
  3. Final Answer:

    from mypackage import utils -> Option D
  4. 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

  1. Step 1: Understand the import and function call

    The code imports math_ops from mypackage and calls math_ops.add(2, 3).
  2. Step 2: Evaluate the function output

    The function add returns the sum of 2 and 3, which is 5.
  3. Final Answer:

    5 -> Option C
  4. 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

  1. Step 1: Understand ModuleNotFoundError cause

    This error often means Python does not recognize the folder as a package.
  2. Step 2: Check package structure requirements

    Without __init__.py, Python won't treat 'tools' as a package, causing import failure.
  3. Final Answer:

    Missing __init__.py file in the tools folder -> Option B
  4. Quick Check:

    __init__.py missing causes ModuleNotFoundError [OK]
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

  1. Step 1: Understand relative imports in packages

    Inside __init__.py, use relative import with dot: from .clean import clean_data.
  2. Step 2: Confirm correct syntax for exposing functions

    This syntax makes clean_data available directly from datautils.
  3. Final Answer:

    from .clean import clean_data -> Option A
  4. 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'
  • Trying to import without __init__.py setup