Het maken van een module is eenvoudig. Je maakt gewoon een Python bestand, met de extensie .py, en plaatst er de functies in die je in de module wilt hebben. Je kunt dit Python bestand dan importeren in een ander Python programma (je gebruikt gewoon de naam van het bestand zonder de extensie .py; het bestand moet in dezelfde folder als het programma staan, of in de folder waar Python altijd zoekt naar modules), en je kunt de functies gebruiken op dezelfde manier als je functies uit de reguliere Python modules gebruikt, dat wil zeggen, je kunt ofwel specifieke functies uit de module importeren, ofwel de hele module importeren en de functies gebruiken via de <module>.<functie>() syntax.

main()

Als je de code van andermans Python programma’s bekijkt, zeker programma’s die functies bevatten die je mogelijk zou willen importeren, zie je vaak een constructie als de volgende:

def main():
    # code...
    
if __name__ == '__main__':
    main()

De functie main() bevat feitelijk het hoofdprogramma, dat andere functies kan aanroepen.

Je hoeft dit niet precies te begrijpen, maar wat hier aan de hand is is het volgende: het Python bestand bevat code die als programma kan draaien, of de functies die het bevat kunnen geïmporteerd worden in andere programma’s. De bovenstaande constructie zorgt ervoor dat de code in main() (dus het hoofdprogramma) alleen wordt uitgevoerd als het programma als een separaat programma is gestart, en niet als een module in een ander programma geladen is. Als in plaats daarvan het programma als module is geladen, kunnen alleen de functies in het programma worden geïmporteerd, en wordt de code voor main() genegeerd.

Een Python bestand dat een dergelijke constructie bevat en dat voornamelijk als module wordt gebruikt, heeft vaak code in main() die de functies test. Dat kan nuttig zijn tijdens de ontwikkeling van de module.

Deze constructie heeft echter nog een tweede toepassing. Omdat main() een functie is, hoef je als je het programma tussentijds wilt verlaten, niet de exit() functie uit de sys module te gebruiken. In plaats daarvan kun je gewoon return doen in de main() functie. Dit vermijdt de lelijke foutboodschap die sommige editors geven bij gebruik van exit().