Back to Python
2026-03-227 min read

Modules Intro (Python Programming)

Learn Modules Intro (Python Programming) step by step with clear examples and exercises.

Title: Python Modules Introduction - A full guide for Beginners

Why This Matters

Python modules are essential building blocks in any Python programmer's toolkit, offering a means to organize, reuse, and manage code effectively. Mastering their use can help you write cleaner, more efficient code, making you stand out in interviews or real-world programming scenarios. By learning how to create, import, and use modules, you will be better equipped to tackle complex projects and collaborate with other developers.

Prerequisites

Before delving into Python modules, it is essential that you have a strong understanding of the following concepts:

  • Basic Python syntax and data structures (variables, loops, functions)
  • Familiarity with importing libraries
  • Understanding of file systems and directory structure
  • Knowledge of classes and objects (optional but recommended for creating custom modules)

Core Concept

What are Python Modules?

In simple terms, a module is a file containing Python definitions and statements. You can create your own modules or use the many pre-built ones available in the standard library. To use a module, you need to import it into your script using the import keyword followed by the module name. For example:

import math
print(math.sqrt(16)) # Output: 4.0

In this example, we imported the math module and used its sqrt() function to calculate the square root of 16.

Creating Your Own Modules

Creating a Python module is as simple as saving your code in a .py file. For instance, if you have the following code in a file named my_module.py, you can import and use it like this:

my_module.py

def greet():

print("Hello, World!")

main.py

import my_module

my_module.greet() # Output: Hello, World!


### Importing Modules Selectively

If you only need specific functions or classes from a module, you can import them individually using the `from ... import ...` syntax. For example:

main.py

from math import sqrt

print(sqrt(16)) # Output: 4.0


### Relative and Absolute Imports

When importing modules, you can use either relative or absolute imports depending on the location of the files in your project structure.

* **Relative imports** are used when working with multiple files within the same directory or subdirectory. For example:

my_subdir/my_module.py

def greet():

print("Hello, World!")

main.py

from . import my_module

my_module.greet() # Output: Hello, World!


* **Absolute imports** are used when working with files in different directories or packages. For example:

my_package/my_module.py

def greet():

print("Hello, World!")

main.py

import my_package.my_module

my_package.my_module.greet() # Output: Hello, World!


### Packages and Subpackages

Python modules can be organized into packages and subpackages for better organization and reusability. To create a package, simply create a directory containing an `__init__.py` file that serves as the entry point for the package. You can then place your modules within the package or create additional subpackages.

### Dynamic Imports

Dynamic imports allow you to import modules at runtime based on user input, environment variables, or other factors. This can be useful in some scenarios but is generally discouraged due to potential issues with performance and code readability.

Worked Example

Let's create a simple module that defines a function to calculate the factorial of a number and use it in another script:

factorial.py:

def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)

main.py:

import factorial

Using the factorial function from the factorial module

result = factorial.factorial(5)

print("Factorial of 5 is:", result) # Output: Factorial of 5 is: 120

Importing individual functions from the math module

import math

sqrt_result = math.sqrt(16)

print("Square root of 16 is:", sqrt_result) # Output: Square root of 16 is: 4.0

Common Mistakes

Forgetting to Save the Module File

Remember to save your module file after making changes, as Python will not automatically update it when you import the module in another script.

Incorrect Import Syntax

Ensure that you use the correct syntax for importing modules and functions. For example:

  • Correct: import math
  • Incorrect: import maths

Not Using Relative or Absolute Imports Correctly

When working with multiple files, make sure to use either relative or absolute imports correctly based on the location of your files.

Common Mistakes (Subheadings)

  • Relative Import Misuse: Failing to include a dot (.) when using relative imports within the same directory can lead to errors. For example:

my_subdir/my_module.py

def greet():

print("Hello, World!")

main.py

from my_module import greet # Correct usage of a relative import

my_module.greet() # Output: Hello, World!


* **Absolute Import Misuse:** Using absolute imports for modules located in packages may cause issues if the package is not installed or imported correctly. For example:

my_package/my_subpackage/my_module.py

def greet():

print("Hello, World!")

main.py

import my_package.my_subpackage.my_module # Incorrect usage of an absolute import

my_package.my_subpackage.my_module.greet() # Output: ModuleNotFoundError


In this case, you should either use a relative import or install the package using pip before attempting to import it.

### Not Properly Initializing Packages and Subpackages

Ensure that your packages and subpackages have an `__init__.py` file to make them recognized by Python as a valid package.

Practice Questions

  1. Write a simple module that defines a function to calculate the area of a rectangle and import it in another script to find the area of a rectangle with dimensions 5 and 7.

rectangle_area.py:

def calculate_area(length, width):
return length * width

main.py:

import rectangle_area
result = rectangle_area.calculate_area(5, 7)
print("Area of the rectangle is:", result) # Output: Area of the rectangle is: 35
  1. Create a module containing a class for a car with attributes make, model, and year. Define a method called display_info() that prints the car's details. Import this module in another script and create an instance of the Car class to display the information of a 2015 Honda Civic.

car.py:

class Car:
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year

def display_info(self):
print("Make:", self.make)
print("Model:", self.model)
print("Year:", self.year)

main.py:

from car import Car
my_car = Car("Honda", "Civic", 2015)
my_car.display_info() # Output: Make: Honda, Model: Civic, Year: 2015
  1. Create a package named my_package with a subpackage named my_subpackage. Within my_subpackage, create a module called my_module that defines a function to calculate the factorial of a number. Import and use this function in another script located outside of the package structure.

my_package/my_subpackage/my_module.py:

def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)

main.py:

from my_package.my_subpackage import factorial
result = factorial(5)
print("Factorial of 5 is:", result) # Output: Factorial of 5 is: 120

FAQ

Question 1: How do I find out which modules are available in Python?

Answer: You can use the dir(__builtins__) function to list all built-in modules or the importlib module to load and inspect other modules. For example:

import importlib
modules = importlib.import_module('__main__').__spec__.name
print("Available modules:", modules)

Question 2: Can I import a single function from a module without importing the entire module?

Answer: Yes, you can import individual functions using the from ... import ... syntax. For example: from math import sqrt.

Question 3: What happens when I try to import a non-existent module or function?

Answer: Python will raise an ImportError exception. You can catch this exception and handle it appropriately in your code. For example:

try:
import non_existent_module
except ImportError as e:
print("Module not found:", e)

Question 4: How do I create a custom module that uses classes and objects?

Answer: To create a custom module with classes and objects, simply save your code in a .py file. Here's an example of a simple module named my_custom_module that defines a class called MyClass with a method called greet().

my_custom_module.py:

class MyClass:
def greet(self):
print("Hello, World!")

You can then import and use this module in another script like this:

main.py:

import my_custom_module
my_object = my_custom_module.MyClass()
my_object.greet() # Output: Hello, World!

FAQ Entries (Subheadings)

  • Question 5: How do I handle missing or invalid modules in Python?

Answer: You can use try-except blocks to catch ImportError exceptions and handle them appropriately. For example:

try:
import non_existent_module
except ImportError as e:
print("Module not found:", e)
  • Question 6: How do I import a module from a different directory in Python?

Answer: You can use either relative or absolute imports to import modules from different directories. Relative imports are used when working with multiple files within the same directory or subdirectory, while absolute imports are used for files in different directories or packages. For example:

  • Relative Import:

my_subdir/my_module.py

def greet():

print("Hello, World!")

main.py

from . import my_module

my_module.greet() # Output: Hello, World!


* **Absolute Import:**

my_package/my_subpackage/my_module.py

def greet():

print("Hello, World!")

main.py

import my_package.my_subpackage.my_module

my_package.my_subpackage.my_module.greet() # Output: Hello, World!

Modules Intro (Python Programming) | Python | XQA Learn