7. Module

Module sind Dateien mit Python-Quellcode, die jeweils über ihren Namen in anderen Programmen importiert werden können, d.h. alle ihre definierten Variablen und Funktionen werden zugänglich.
Ein Modul enthält eine Folge von Anweisungen, d.h. üblicherweise Deklarationen, Funktionen und Klassen. Auf der Platte ist es unter Modulname.py zu finden.

Beispiel (Datei faculty.py):
def facultyIter(n):
    fact = 1
    for i in range(2, n+1):
        fact = fact*i
    return fact

def facultyRec(n):
    if n <= 1:
        return 1
    else:
        return n*facultyRec(n-1)

Zum Importieren eines ganzen Moduls dient der Befehl import Modulname. Danach kann auf alle Felder des Moduls über Modulname.feldname zugegriffen werden.

Möchte man sich das ständige Dazuschreiben des Modulnamens ersparen, kann man auch beliebig viele Modulfelder importieren:
from faculty import facultyIter
# importiert die Funktion facultyIter
# Zugriff: facultyIter(n)
from faculty import *
# importiert alle Felder aus faculty
# Zugriff wie oben

Durch letztere Optionen werden die Felder direkt im Namespace des importierenden Moduls angelegt, sodaß Namenskonflikte entstehen können. Auch das importierte Modul als solches ist nicht mehr bekannt, d.h. faculty.facultyIter(n) funktioniert gar nicht.
Aus diesen Gründen wird empfohlen, nach Möglichkeit das ganze Modul zu importieren.
 

Namespaces

Ein Namespace in Python bezeichnet eine Tabelle (derzeit ein Dictionary), das die Beziehung zwischen Namen und Objekten herstellt. Zu jedem Zeitpunkt gibt es genau 3 verschachtelte Namespaces: Bei Referenzierung eines Feldes wird zuerst im lokalen (innersten) Namespace gesucht, und von dort an nach außen. Man beachte, daß es bei Zuweisungen eine Besonderheit zu beachten gibt:
Wird an eine Variable zugewiesen, die im lokalen Namespace nicht namentlich bekannt ist, wird nicht mehr weitergesucht, sondern in jedem Fall eine neue Variable im lokalen Namespace angelegt. Möchte man statt dessen mit einer globalen Variable arbeiten, so muß hierfür das Schlüsselwort global verwendet werden.
 

Der dir-Befehl

Der dir-Befehl gehört zu den in Python eingebauten Funktionen und liefert für ein Modul bzw. eine Klasse die darin deklarierten Felder als Liste.
Beispiel:
>>> dir(faculty)
['__builtins__', '__doc__', '__file__', '__name__', 'facultyIter', 'facultyRec']
Damit erhält man z.B. alle m Modul faculty definierten Variablen und Funktionen.
 

Packages

Um Module noch weiter untereinander (z.B. nach Einsatzzweck) zu gliedern, gibt es die Möglichkeit, mehrere Module in einem Package zusammenzufassen. Ein Package besteht im wesentlichen aus einem Verzeichnis mit Modulen und einem (möglicherweise leeren) Package-Initialisierer namens __init__.py. Packages können geschachtelt werden.
Ein Modul aus einem Package wird wie im folgenden Beispiel angesprochen:
Sounds.Formats.wavread -> Modul wavread, das im Package Sound und dessen Subpackage Formats liegt und daher auf der Platte in ...\Sounds\Formats\wavread.py zu finden ist.
 
 
Klassen