Python: Module

Willemers Informatik-Ecke


Bestellen bei Amazon
2015-07-31

Diese Seiten sind Grundlage meines Python-Buchs aus den ersten Recherchen.

Funktionen fassen einzelne Anweisungen zu einer neuen Anweisung zusammen. Funktionen, die zusammen gehören, kann man wiederum in eine Bibliothek packen. Einige Bibliotheken liefert Python bereits mit.

Standard-Bibliotheken

Als Beispiel verwenden wir hier die Bibliothek math, die in jeder Python-Installation vorhanden ist. Hier geht es nicht um den Inhalt von math, sondern vor allem darum, wie Sie eine Bibliothek von Ihrem Programm aus nutzen.

Um Funktionen oder Konstanten von math zu verwenden, muss die Bibliothek zunächst importiert werden.

import math
print(math.sin(math.pi/2))
Alternativ können die Elemente auch schon beim Import gerufen werden. Damit müssen die Elemente nicht mehr explizit mit vorangestelltem Bibliotheksnamen aufgerufen werden.
from math import sin, pi
print(sin(pi/2))
Sollte aus der Bibliothek math mehrere Funktionen benötigt werden, kann auch der Stern als Platzhalter für die einzelnen Namen verwendet werden.
from math import *
print(sin(pi/2))
Nun können alle Funktionen der Bibliothek aufgerufen werden. Es ist auch nicht erforderlich, den Bibliotheksnamen davor zu stellen. Allerdings steigt das Risiko der Namensüberschneidungen zwischen den Namen verschiedener Bibliotheken und des eigenen Programms.

Übersicht über die verfügbaren Module

Die Funktion dir() liefert, wenn sie ohne Parameter aufgerufen wurde, eine Liste aller zugreifbaren Module. Wird dir() als Parameter der Name eines Moduls übergeben, liefert sie eine Liste aller Namen, die über dieses Modul zugreifbar sind. Sie können dies testen, indem Sie den Python-Interpreter aufrufen!
$ python3
Python 3.4.2 (default, Oct  8 2014, 10:45:20) 
>>> dir()
['__builtins__', '__doc__', '__loader__', '__name__',
'__package__', '__spec__']
>>> import tkinter
>>> dir()
['__builtins__', '__doc__', '__loader__', '__name__',
'__package__', '__spec__', 'tkinter']
>>> dir(tkinter)
['ACTIVE', 'ALL', 'ANCHOR', 'ARC', 'BASELINE', 'BEVEL', ...

Eigene Module

Wenn die Programme wachsen, sollte man sie in verschiedene Quelltextdateien zerlegen. Dann ist es allerdings notwendig, dass der Interpreter weiß, wo er die ausgelagerten Funktionen findet. Dazu wird wie bei Bibliotheken der Befehl import verwendet. Als Name wird der Dateiname ohne die Endung .py verwendet.

Die Namensgebung ist etwas eingeschränkt. Einerseits sollte abgesehen von der Endung kein weiterer Punkt im Dateinamen sein. Darüber hinaus sollte das Modul auch nicht den Namen einer Bibliothek tragen, der vom Programm benötigt wird, da diese Bibliothek durch das eigene Modul verdeckt wird.

Start-Code eines Moduls
Selbstgeschriebene Module enthalten normalerweise Klassen oder Funktionen, die von anderen Modulen verwendet werden. Sie können aber auch normale Befehle hineinschreiben. Dieser wird beim Import des Moduls automatisch ausgeführt.

In manchen Fällen soll das Programm eines Moduls nur dann ausgeführt werden, wenn das Programm als eigenständiges Programm aufgerufen wird. Das kann beispielsweise für das Testen eines Moduls interessant sein. Dann schreiben Sie vor die Befehle der Hauptebene eine Abfrage, ob dieses Modul als das Hauptmodul ausgeführt wird:

if __name__ == '__main__':
    print("Dies ist ein Test des Moduls")

Pakete

Auch Module können zusammengefasst werden. Dazu werden die Module-Dateien in einem Verzeichnis gesammelt. Pakete können ihrerseits Pakete enthalten, die ebenfalls als Unterverzeichnisse umgesetzt werden.

In dem Unterverzeichnis muss eine Datei namens __init__.py existieren. Es sind übrigens zwei Unterstriche vor und hinter dem init. Diese Datei enthält Programmzeilen für eine eventuell notwendige Initialisierung des Pakets, darf aber auch leer sein.


Homepage (C) Copyright 2014, 2015 Arnold Willemer