Skip to main content

Python Modules

What is a module in Python?​

A module is a file containing Python definitions and statements.

Modules are used:

  • to break down large programs into small manageable and organized files.
  • to provide reusability of code.
  • to be imported into different programs.

How to create modules in Python?​

To create a module, simply save the desired code in a file with the .py extension.

For example, create mymodule.py:

# Python Module mymodule

def add(a, b):
"""This function sums two numbers and returns the result"""
return a + b

def say_hello(name):
return f"Hello {name}"

How to import modules in Python?​

To use the definitions of a form, you must import that module!

note

Python Standard Modules can be imported in the same way as user-defined modules.

Listed below are the various ways to import modules.

Python import statement​

The import statement is used to import a module and then access the definitions inside it using the . (dot) operator.

import mymodule

result = mymodule.sum(1 + 2)
print(result) # 3
note

It does not import the names of functions defined in mymodule directly into the current symbol table. It imports only the name of the mymodule module.

Import with renaming​

A module can be imported and be renamed using as keyword.

For example, import mymodule.py module and rename it to m

import mymodule as m

result = m.sum(1 + 2)
print(result) # 3
note

Once the name is changed, only the new alias can be used to refer to the definitions contained in the module.

Python from...import statement​

You can import specific names from a module without importing the module as a whole.

For example, import the pi and e attributes from the math module.

from math import pi, e
print("The value of pi is", pi)
print("The value of e is", e)
note

In these cases, the dot . operator is not used.

Import all names​

You can import all name definitions from a module using the * symbol in this way:

from math import *
print("The value of pi is", pi)
print("The value of pi is", e)
note

With * you import all the definitions from the math module.

warning

Importing everything with an asterisk * symbol is not good programming practice because it can lead to duplicate identifier definitions and reduce code readability.

Python Module Search Path​

The Python Interpreter looks at several places while importing a module.

First, it looks for a built-in module. Then, if the built-in module is not found, it searches into a directory list defined in sys.path.

In summary, the search is in this order:

  • The current directory.
  • PYTHONPATH (an environment variable with a list of directories).
  • The installation-dependent default directory.

Example of what you can find in sys.path (varies depending on the system)

['',
'C:\\Python33\\Lib\\idlelib',
'C:\\Windows\\system32\\python33.zip',
'C:\\Python33\\DLLs',
'C:\\Python33\\lib',
'C:\\Python33',
'C:\\Python33\\lib\\site-packages']

Using the dir() Function​

The dir() function is used to find out names that are defined inside a module.

note

The dir() function can be used on all modules, even those created by the user.

For example, this is what math module contains (output of dir(math)

['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
note

All names beginning with an underscore are default Python attributes associated with the module.