A Python module is composed of the classes, functions and variables contained in a single python file. A python file can contain multiple classes, not just a single class like in Java. Module names should be simple and ideally kept to one word.
Below is an example module, which is contained in a file called mod.py:
Note: The module name is the name of the file minus the .py extension.
ONE = 1
def do_something():
print(‘I am a function that does something’)
class Class1:
def __init__(self, a):
self.a = a
def printa(self):
print(self.a)
Modules are imported as follows:
import mod
This imports mod into the current symbol table, not everything inside mod. Everything inside mod is accessible though.
Modules may also be imported using a shortcut for the module name:
import mod as m
Individual names may be imported into the current symbol table as follows:
from mod import Class1
This does not import mod into the symbol table though, only Class1.
Names may also be imported using:
from mod import *
However, this method is not recommended as it’s introducing unknown names and could override something already defined.
If a module member is frequently used, it can be assigned to a variable to shorten things up as follows:
import mod
do = mod.do_something()
do()
This would also work:
from mod import do_something as do
do()
The example mod module could be used by another file, main.py, as follows:
import mod
mod.do_something()
print(mod.ONE)
clazz = mod.Class1(5)
clazz.printa()
Modules should be well organized and contain classes, functions and variables which make sense being grouped together. I’m not a big fan of super large files. Since there is not a restriction on how many classes can be defined in a single file, a file could get large quickly. If a class, function, or the module itself, is pretty large, it could be a sign there’s too much going on and may be able to be broken down further into smaller pieces.
Leave a Reply
You must be logged in to post a comment.