A Byte of Python

Kapitel 8. Module

Inhaltsverzeichnis

Einführung
Benutzung des sys-Moduls
Byte-kompilierte .pyc-Dateien
Die Anweisung from..import
Der __name__ eines Moduls
Verwendung von __name__
Eigene Module erstellen
Eigene Module erstellen
from..import
Die Funktion dir()
Die dir-Funktion verwenden
Zusammenfassung

Einführung

Sie haben gesehen, wie Sie Code in Ihren Programm wieder verwenden können, indem Sie Funktionen nur einmal definieren. Was machen Sie aber, wenn Sie eine ganze Anzahl von Funktionen in anderen Programmen benutzen wollen? Wie Sie vielleicht vermutet haben, sind Module die Lösung dafür. Ein Modul ist im Grunde nur eine Datei, die alle von Ihnen definierten Funktionen und Variablen beinhaltet. Um ein Modul in anderen Programmen wiederverwenden zu können, muss der Dateiname eines Moduls die Endung .py haben.

Ein Modul kann von einem anderen Programm importiert werden, um von dessen Funktionalität Gebrauch zu machen. Genauso können wir auch die Python-Standardbibliothek verwenden. Zunächst werden wir sehen, wie wir die Module der Standardbibliothek verwenden können.

Benutzung des sys-Moduls

Beispiel 8.1. Benutzung des sys-Moduls (beispiel_sys.py)

				
#!/usr/bin/python

import sys

print 'Die Kommandozeilenparameter sind:'
for i in sys.argv:
	print i

print '\n\nDer PYTHONPATH ist', sys.path, '\n'
				
				

Ausgabe

				
$ python beispiel_sys.py Wir sind Argumente
Die Kommandozeilenparameter sind:
beispiel_sys.py
Wir
sind
Argumente


Der PYTHONPATH ist ['/home/swaroop/byte/code', '/usr/lib/python23.zip',
'/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2',
'/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload',
'/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/gtk-2.0']
				
				

So funktioniert es

Zuerst importieren wir das Modul sys mittels der import-Anweisung. Im Wesentlich teilen wir Python dadurch mit, dass wir dieses Modul in unserem Programm verwenden wollen. Das Modul sys enthält Funktionalität, die mit dem Python-Interpreter selbst und dessen Umgebung zu tun hat.

Wenn Python die Anweisung import sys ausführt, sucht es nach dem Modul sys.py in einem der Verzeichnisse, die in seiner Variablen sys.path aufgelistet werden. Wird die Datei gefunden, so werden die Anweisungen im Hauptblock dieses Moduls ausgeführt. Das Modul wird für Sie dann verfügbar gemacht. Beachten Sie, dass die Initialisierung nur beim ersten Mal durchgeführt wird, wenn wir ein Modul importieren. Übrigens steht 'sys' als Abkürzung für 'System'.

Der Zugriff auf die Variable argv im Modul sys geschieht mittels der Punktnotation sys.argv. Ein Vorteil dieser Vorgehensweise besteht darin, dass der Name nicht mit einer anderen Variablen des Namens argv innerhalb Ihres Programms kollidiert. Auch weist er eindeutig darauf hin, dass er Teil des Moduls sys ist.

Die Variable sys.argv ist eine Liste von Strings (Listen werden in späteren Abschnitten genauer erklärt). Diese spezielle Liste sys.argv besteht aus den Kommandozeilenparametern, d.h. den zusätzlichen Argumenten, die Ihrem Programm über die Kommandozeile übergegeben wurden.

Wenn Sie eine Entwicklungsumgebung verwenden, um diese Programme zu schreiben und auszuführen, suchen in den Menüs nach einer Möglichkeit, dem Programm Kommandozeilenparameter zu übergeben.

Wenn wir python beispiel_sys.py Wir sind Argumente ausführen, starten wir das Modul beispiel_sys.py mit dem python-Befehl, und alles andere danach sind Argumente, die dem Programm übergeben werden. Python speichert sie für uns in der Variablen sys.argv.

Denken Sie daran, dass der Name des laufenden Skripts immer der erste Parameter in der Liste sys.argv ist. In diesem Fall haben wir also 'beispiel_sys.py' als sys.argv[0], 'Wir' als sys.argv[1], 'sind' als sys.argv[2] und 'Argumente' als sys.argv[3]. Beachten Sie, dass Python mit 0 anfängt zu zählen, und nicht mit 1.

Die Variable sys.path enthält die Liste der Namen der Verzeichnisse, aus denen Module importiert werden. Beachten Sie, dass der erste String in sys.path leer ist - dieser Leerestring zeigt an, dass das aktuelle Verzeichnis auch Teil von sys.path ist, das ansonsten mit der Umgebungsvariablen PYTHONPATH übereinstimmt. Das bedeutet, dass Sie Module, die sich im gleichen Verzeichnis befinden, direkt importieren können. Andernfalls müssen Sie Ihr Modul in eines der Verzeichnisse platzieren, die in sys.path aufgelistet sind.