Renaming an Imported Module
00:00
The import
statement is quite flexible. There are four variations that you should know about. First, import <module>
, import <module> as <other_name>
, from <module> import <name>
, and from <module> import <name> as
some other name. You already worked with the first import
statement.
00:20
Let’s look at the three other import
statement variations in detail.
00:25
With an import
statement that looks like this—import <module> as
some other module name—you can change the name of an import when you import a module.
00:35
This way, the module’s namespace is accessed through <other_name>
instead of <module>
. So how does this look in action?
00:46
In your project, change the import
statement in main.py
to the following: import adder as a
, and then leave the code below unchanged.
00:58
Save the file and run it. Now a NameError
is raised: NameError: name 'adder' is not defined
. The reason why Python raised this NameError
is because the module has been imported with the name a
instead of adder
. Therefore, the adder
name doesn’t exist anymore and it’s no longer recognized.
01:20
To make main.py
work, you need to replace adder.add()
and adder.double()
with a.add()
and a.double()
. So let’s do that. In the line after the import
statement, you change the value to a.add()
, and in the line below, you change the value of double_value
to a.double()
.
01:47 Now save the file and run the module.
01:51
No NameError
is raised, and the values 4
and 8
are printed in the interactive window. So changing the name of an import can be handy when you want to make a name unique or shorten long module names. For example, if you are importing a module, and the module’s name is a name that you already have for a variable, then it can make sense to rename the module that you’re importing to a different name.
02:16 But usually, you rename a module that you’re importing because the name of the module that you’re importing is very long. So shortening can make sense. However, you could argue that shortening the name to a single letter isn’t particularly descriptive, and it’s not super short, as you still need the notation in front of the function name. So let’s have a look at another import variant.
Become a Member to join the conversation.