EMZETT.
Login

Kurz: Je größer ein Programm wird, desto unübersichtlicher wird eine einzige Datei. Mit Modulen teilst du Code auf mehrere Dateien auf und nutzt Code, den andere geschrieben haben. Ein Modul ist einfach eine Python-Datei.

Teil des Kurses Python

Kapitel 30 von 44 im Kurs Python. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Je größer ein Programm wird, desto unübersichtlicher wird eine einzige Datei. Mit Modulen teilst du Code auf mehrere Dateien auf und nutzt Code, den andere geschrieben haben. Ein Modul ist einfach eine Python-Datei; mit import machst du ihren Inhalt verfügbar.

Module der Standardbibliothek

Python bringt Hunderte Module mit (“Batterien inklusive”):

import math
print(math.sqrt(81))
print(math.pi)

Ausgabe:

9.0
3.141592653589793

Es gibt mehrere Schreibweisen für den Import:

import math                       # math.sqrt(...)
from math import sqrt, pi         # direkt sqrt(...) und pi
from math import floor as runde   # mit anderem Namen
import random as zufall           # Modul unter anderem Namen
 
print(sqrt(16), pi)
print(runde(2.9))
print(zufall.randint(5, 5))

Ausgabe:

4.0 3.141592653589793
2
5

Tipp

Vermeide from modul import *. Es kippt alle Namen in dein Programm und macht unklar, woher eine Funktion stammt.

Eigene Module schreiben

Lege eine Datei rechnen.py an:

rechnen.py

PI = 3.14159
 
def kreisflaeche(r):
    return PI * r * r
 
def verdopple(x):
    return x * 2

In einer zweiten Datei im selben Ordner importierst du sie:

haupt.py

import rechnen
 
print(rechnen.verdopple(21))
print(round(rechnen.kreisflaeche(2), 2))

Der Dateiname ohne .py ist der Modulname. Python sucht Module im Ordner des Skripts, in den installierten Paketen und in der Standardbibliothek.

if name == “main”

Jedes Modul kennt seinen eigenen Namen in __name__. Läuft die Datei direkt, ist er "__main__", wird sie importiert, ist es der Modulname. So trennst du Bibliothekscode von Startcode:

rechnen.py

def verdopple(x):
    return x * 2
 
if __name__ == "__main__":
    # läuft nur bei "python rechnen.py", nicht beim Import
    print("Selbsttest:", verdopple(4))

Dieses Muster steht am Ende fast jedes Python-Skripts.

Was ein Modul enthält

Mit dir() listest du auf, was ein Modul anbietet, mit help() bekommst du die Dokumentation:

import math
print([n for n in dir(math) if n.startswith("s")][:5])
print(math.sqrt.__doc__.splitlines()[0])

Ausgabe:

['sin', 'sinh', 'sqrt']
Return the square root of x.

Der Suchpfad

Wo Python sucht, steht in sys.path. Ein nicht gefundenes Modul meldet einen ModuleNotFoundError:

import gibt_es_nicht

Fehlermeldung:

Traceback (most recent call last):
  File "beispiel.py", line 1, in <module>
    import gibt_es_nicht
ModuleNotFoundError: No module named 'gibt_es_nicht'

Zusätzliche Bibliotheken installierst du mit pip (nächstes Kapitel).

Pakete: Ordner mit Modulen

Ein Paket ist ein Ordner mit Modulen, meist mit einer Datei __init__.py:

meinprojekt/
├── haupt.py
└── werkzeuge/
    ├── __init__.py
    ├── text.py
    └── zahlen.py
from werkzeuge import text
from werkzeuge.zahlen import runde

Merke

  • Ein Modul ist eine .py-Datei; import modul macht sie verfügbar
  • from modul import name und import modul as kurzname sind Varianten
  • if __name__ == "__main__": trennt Startcode von importierbarem Code
  • Ein Paket ist ein Ordner mit Modulen (und __init__.py)
  • Nicht gefundene Module melden ModuleNotFoundError

Übungsaufgabe

Lege ein Modul werkzeuge.py mit einer Funktion ist_gerade(n) an und importiere es in einem zweiten Skript.

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Fehlerbehandlung mit try und except

Weiter: Pakete installieren mit pip und venv

Alle Kapitel: Python im Überblick