Series: Modules

Watch as video

02:02

Sign in to your Python Morsels account to save your screencast settings.

Don't have an account yet? Sign up here.

Let's talk about importing modules in Python.

Also see the

moduledefinition in Python Terminology.

Python comes bundled with a whole bunch of modules called the Python standard library.
We're going to import the `math`

module from the standard library:

```
>>> import math
```

The `math`

module has a function called `sqrt`

that we can use to get the square root of a number.

We can't currently call the `sqrt`

function directly:

```
>>> sqrt(25)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sqrt' is not defined
```

To use the `sqrt`

function we need to call `math.sqrt`

:

```
>>> math.sqrt(25)
5.0
```

Whenever you import a module, Python will make just one variable, the name of the module that we imported, (`math`

in our case) which points to a module object:

```
>>> math
<module 'math' from '/usr/lib/python3.9/lib-dynload/math.cpython-39-x86_64-linux-gnu.so'>
```

When we imported the `math`

module, we got **a module object**, and that module object **has attributes**.

Our `math`

module object has a `pi`

attribute:

```
>>> math.pi
3.141592653589793
```

And an `e`

attribute:

```
>>> math.e
2.718281828459045
```

And a `sqrt`

attribute:

```
>>> math.sqrt
<built-in function sqrt>
>>> math.sqrt(25)
5.0
```

And a whole bunch of other attributes.
Everything within the `math`

module lives as an attribute on that `math`

module object.

After you've imported the `math`

module, you'll need to put `math.`

before the name of anything you'd like to use in the module.
If you don't want to have to type `math.`

something every time you use something in the `math`

module, instead of using an `import`

statement you could use a `from`

-`import`

statement.

So instead of this:

```
>>> import math
```

You could do this:

```
>>> from math import sqrt
```

Now we'll have access to the `sqrt`

function directly:

```
>>> sqrt(25)
5.0
```

Or if we wanted to import multiple things we could put commas between them:

```
>>> from math import sqrt, pi
```

We now have `pi`

and `sqrt`

:

```
>>> pi
3.141592653589793
>>> sqrt(25)
5.0
```

but we don't have `e`

:

```
>>> e
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'e' is not defined
```

Because we didn't import `e`

from the `math`

module.

See 4 ways to import a module in Python for more on importing.

`import X`

or `from X import Y`

to import modules in PythonIf you want to import a module in Python, you'll need to use an `import`

statement.
But unless you want to type the name of the module over and over (each time you access something in the module), you might want to use the `from`

syntax for importing instead: `from MODULE_NAME import THINGS_FROM_MODULE`

.

Intro to Python courses often skip over some **fundamental Python concepts**.

Sign up below and I'll explain **concepts that new Python programmers often overlook**.

Modules are the tool we use for breaking up our code into multiple files in Python.
When you write a `.py`

file, you're making a Python module.
You can import your own modules, modules included in the Python standard library, or modules in third-party packages.

To track your progress on this Python Morsels topic trail, sign in or sign up.

Importing a module in Python

02:02

4 ways to import a module in Python
04:09

Importing a module runs code
03:16

Modules are cached
02:36

Importing everything from a module
04:22

Exiting a Python program
05:45

What's __init__.py?
03:16

Fixing circular imports
05:09

Dynamically importing modules
03:47

✕

↑

Concepts Beyond Intro to Python

Intro to Python courses often skip over some **fundamental Python concepts**.

Sign up below and I'll share ideas **new Pythonistas often overlook**.