Python tutorials > Modules and Packages > Modules > How to import modules?
How to import modules?
In Python, modules are files containing Python definitions and statements. They provide a way to organize code into reusable blocks. Importing modules allows you to use the functions, classes, and variables defined within them. This tutorial covers various ways to import modules in Python.
Basic Import: Using the import
statement
The most basic way to import a module is using the import
statement followed by the module's name. Once imported, you can access the module's contents using the dot notation (module_name.attribute
).
import math
print(math.sqrt(16)) # Output: 4.0
Importing Specific Names: Using from ... import ...
If you only need specific names (functions, classes, variables) from a module, you can use the from ... import ...
statement. This allows you to access the imported names directly without needing to use the module name as a prefix.
from math import sqrt, pi
print(sqrt(25)) # Output: 5.0
print(pi) # Output: 3.141592653589793
Importing All Names: Using from ... import *
(Generally Discouraged)
The from ... import *
statement imports all names from a module into the current namespace. While convenient, this is generally discouraged because it can lead to naming conflicts and make your code harder to read and understand. It becomes difficult to determine where a particular name originates from.
# Avoid this in most cases!
from math import *
print(sqrt(36)) # Output: 6.0
print(cos(0)) # Output: 1.0
Renaming Modules and Names: Using as
You can rename a module or a specific name during import using the as
keyword. This can be useful for shortening long module names or avoiding naming conflicts. The first example renames the math
module to m
. The second example renames the sqrt
function to square_root
.
import math as m
print(m.sqrt(49)) # Output: 7.0
from math import sqrt as square_root
print(square_root(64)) # Output: 8.0
Concepts behind the snippet
Python's module import system provides a structured way to organize and reuse code. Modules encapsulate related functionalities, improving code maintainability and readability. Importing modules makes these functionalities available in other parts of your program.
Real-Life Use Case Section
Imagine you are building a data analysis application. You might import the pandas
module for data manipulation, numpy
for numerical operations, and matplotlib
for creating visualizations. Each module provides specialized functionality that contributes to the overall application.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.DataFrame({'col1': np.random.rand(10), 'col2': np.random.rand(10)})
plt.plot(data['col1'], data['col2'])
plt.show()
Best Practices
from ... import *
unless you have a very specific reason and understand the risks.as
to shorten long module names, but choose aliases that are meaningful.
Interview Tip
Be prepared to explain the different ways to import modules in Python and the pros and cons of each approach. Understanding the use of from ... import *
is especially important, along with why it is generally discouraged.
When to use them
import module
: Use when you need to access multiple attributes from a module and want to keep the namespace clean.from module import name
: Use when you only need specific attributes and want to avoid prefixing them with the module name.import module as alias
: Use when you want to shorten the module name or avoid naming conflicts.
Memory footprint
Importing modules does consume memory, but the impact depends on the size of the module. Generally, importing only the necessary attributes using from ... import ...
can reduce memory footprint compared to importing the entire module using import module
. However, the difference is usually negligible for small to medium-sized modules. Large modules with many dependencies may have a more noticeable impact.
Alternatives
Alternatives to explicit module imports are limited, as importing is fundamental to using external code in Python. However, for very specific situations, you might consider:importlib
to import modules at runtime based on conditions. This is an advanced technique and rarely needed for basic module usage.
Pros
Cons
from ... import *
): Using from ... import *
can pollute the namespace and lead to naming conflicts.
FAQ
-
What happens if I import the same module multiple times?
Python only imports a module once per session. Subsequent
import
statements for the same module simply return a reference to the already imported module. This prevents redundant loading and conserves memory. -
How do I import a module from a different directory?
You can add the directory containing the module to Python's module search path (
sys.path
). Alternatively, you can create a package structure with an__init__.py
file to treat the directory as a package. -
What is the difference between a module and a package?
A module is a single file containing Python code. A package is a directory containing multiple modules and an
__init__.py
file. Packages are used to organize modules into a hierarchical structure.