Modules
In Python, modules are files that contain code that's ready for us to use.
Here are a few examples:
- The
randommodule that we previously used to generate random numbers. - The
cmathmodule offers complex mathematical functionality. - The
csvmodule is for reading and writing tabular data to and from delimited files. - The
emailmodule supports parsing, manipulating, and generating email messages. - The
scikit-learnlibrary contains modules for machine learning work.
There are tons of modules and libraries out there. When you need to implement some feature and you don't know how, you can search for a module that provides these functions for you.
You can also write your own modules, like the utilities module from the first example in the discussion of helper functions.
Importing Modules
To use a module, you’ll need to import it using Python’s module system. You’ve used import before, for code like this:
import random
random_number = random.randint(0, 100)
print(random_number) # 76 (when I ran it - different each time)
random is a module with useful functions like randint, which generates a random number. Modules are python’s way of grouping related functions.
Importing from modules you wrote
You've seen how to import from external modules like random. But what about importing functions from your own code?
You can import functions from other files within your project using import too.
Imagine that you have a file called utilities.py where you have the following function:
def square_area(length, width):
return length * width
You can import this helper function from another file by using the name of the file it's from:
# (in main.py)
from utilities import square_area
result = square_area(10, 20)
Since square_area is in the file utilities.py, you can import it using from utilities. The name of the file is where you import from.
Note: If you take a look at how the tests work in your exercises, they often import code from
main.pyto test.
Renaming imports
If you want to use a different name for something you import, you can change the name using as. For example:
from utilities import square_area as sq
result = sq(10, 20)
dir() built-in function
One way to know what functions does a module provides is by using the built-in function dir()
For example, run this snippet to see all the variables and functions in the random module:
import random
print("The contents of the random library are:")
print(dir(random))
When I run this, I see:
The contents of the random library are:
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST',
'SystemRandom', 'TWOPI', '_BuiltinMethodType', '_MethodType', '_Sequence',
'_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__',
'__name__', '__package__', '__spec__', '_acos', '_ceil', '_cos', '_e', '_exp',
'_inst', '_log', '_pi', '_random', '_sha512', '_sin', '_sqrt', '_test', '_test_generator',
'_urandom', '_warn', 'betavariate', 'choice', 'expovariate', 'gammavariate', 'gauss',
'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint',
'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform',
'vonmisesvariate', 'weibullvariate']
This is a lot of output! dir() doesn't explain what any of those variables or
functions do, but you can look up the documentation for any of the ones that
seem interesting.
Reading the Docs
To find the functions that a module provides, you can use Google, or look at the documentation (”docs”) for that module.
https://docs.python.org/3/library/random.html#module-random is the link to the docs for the random module. Click it to see everything there is to know about random.
📖 Tips for Reading Documentation
-
Documentation covers everything. You probably only need a small part. Skim, search, and scan to find what you actually need
-
Sometimes it’s helpful to just see the name of a function, then try it out to see what it does.
-
Function descriptions in documentation look like this:
random.choice(seq)
Return a random element from the non-empty sequence seq. If seq is empty, raises
[IndexError](https://docs.python.org/3/library/exceptions.html#IndexError).This one means you can pass a sequence (like a list) into the
choicefunction provided by therandommodule, and it will return a random element from the list.
What modules are available?
You can use Google to find a Python module, or look at the index of all built-in modules. There’s a lot of modules, so you might scan it now, then just Google it when there’s something in particular that you need.
Lots of modules are not built into python — they’re written by other developers. In order to use modules that aren’t built in, you need to install them so that they are available to import.
Later on, you'll learn how to install external libraries, and practice using some of the most common and powerful libraries, like requests and flask.
Modules you’ll use
In the “Distance Traveled” practice, you’ll need to import the math module to use the math.sqrt function. In the "Quick Draw" practice, you imported the random module to generate random numbers, and the time module to measure how long things take.
In the past, students have used modules for special features in their projects, such as:
- the
requestsmodule to interact with data over the web - the
gttsmodule for text-to-speech - the
termcolormodule to change the color of the text output - various modules for drawing images and figures