next up previous contents index 6163656769
Next: 1.6 Zusammenfassung Up: 1. Objekte und Namen Previous: 1.4 Vergleich mit anderen   Contents   Index

1.5 Module

Ein Modul ist nun nichts weiter als der Ort, an dem Namen gespeichert werden. Dieses ist lediglich eine Datei, in der Sie den Code speichern. Wir werden sehr bald verstehen, dass ein solches Modul sozusagen ein Programm darstellt. Statt also alles am Interpreter direkt auszuprobieren, benutzen Sie den Editor von IDLE und erstellen Sie eine Datei mit der Dateiendung .py, zum Beispiel test.py. In diese Datei schreiben Sie dann ihren Code genauso ein, als ob Sie ihn direkt am Interpreter-Prompt eingeben würden.

Dann rufen Sie den Interpreter auf und laden das Modul mit dem Befehl import test1.8. Sodann läuft der Code automatisch ab. Der Witz ist der, dass Sie mit den durch das Modul eingerichteten Namen nach »Ablauf« des Programms weiterarbeiten können. Ein Beispiel: schreiben Sie im Editor den Text

#Modul test 

anna=4

3+5*anna

print 'Das war ein erstes Beispiel'

Speichern Sie dieses Modul als test.py ab. Rufen Sie dann im Interpreter das Modul wie folgt auf

>>>import test

Das war ein erstes Beispiel

Geben Sie danach am Interpreterprompt lediglich

>>>anna
ein, um zu überprüfen, ob anna tatsächlich noch verfügbar ist. Sie werden sehen, dass dies entweder nicht der Fall ist, oder irgendein anderes Objekt von früher, z.B. 'Hello world' ausgegeben wird, aber jedenfalls nicht 4, was ja im Modul vereinbart wurde. In der Tat, der Name muss wie folgt aufgerufen werden:

>>>test.anna

4

Da haben wir es! Wenn wir in Zukunft bei den durch das Modul eingerichteten Namen nicht immer test. davorschreiben wollen, muss der Aufruf

>>>from test import *
angeschlossen werden. Jetzt funktioniert die Eingabe anna ohne die Spezifiezierung test. wie gewünscht.

Ändern Sie jetzt einmal das Modul so, dass im Text die Zuweisung anna=7 erfolgt. Importieren Sie wieder das Modul und überprüfen Sie, worauf anna jetzt zeigt.

Sie werden feststellen, dass dieses keineswegs die 7 ist. Warum? Python stellt fest, dass bereits der Name anna schon existiert! Ein neuer Import wird daher nicht vorgenommen. Ja, anna würde in der alten Form sogar dann noch verfügbar sein, wenn der Name im veränderten Modul sogar gelöscht wurde!

Das wirkt auf den ersten Blick ärgerlich, ist aber von sehr grossem Vorteil, wie Sie später einsehen werden. Um ein verändertes Modul nun vollständig, also auch mit den Veränderungen neu zu laden, muss

>>>reload (test)
eingegeben werden. Jetzt aber steht das neue anna wieder nur als test.anna zur Verfügung. Ein neuerliches from test import * ist also notwendig.

Figure: Module sind Namenscontainer
\includegraphics{modul.eps}

In der Abbildung [*] wird gezeigt, wie das Ganze zu verstehen ist. Module enthalten eigentlich nur Namen, in diesem Falle cdaniela und cerica, die ausserhalb der definierten Klassen sichtbar sind. Wenn ein Modul importiert wird

Figure: Das Mainmodul der Python-Umgebung
\includegraphics[%
scale=0.6]{main.eps}

, landet es zunächst als Ganzes in dem Hauptmodul mit dem Namen __main__ (jeweils zwei Unterstriche am Anfang und Ende) der Python-Umgebung. In diesem Mainmodul ist nur der Modulname selbst sichtbar. Auf die Namen innerhalb des Moduls muss also mit Hilfe des Selektors ».« zugegriffen werden.

Wenn mit from der Inhalt eines Moduls importiert wird, wie bei dem rechten Modul, bei dem der Rahmen gestrichelt gezeichnet wurde, so stehen diese Namen alle so zur Verfügung, als hätte man sie direkt im Interpreter definiert. Wenn diese Namen aber schon durch einen vorherigen Import existieren, muss das gesamte Modul nachgeladen und ein erneutes from durchgeführt werden.


next up previous contents index 6163656769
Next: 1.6 Zusammenfassung Up: 1. Objekte und Namen Previous: 1.4 Vergleich mit anderen   Contents   Index
Heiko Schroeder 2003-03-19