Ein eigenes Modul erstellen

Wenn deine Funktion fertig ist und du sie vielleicht auch in anderen Programmen verwenden möchtest, kannst du dir ein eigenes Modul basteln. Das kannst du dann später in jedes beliebige Programm importieren und damit die Funktion daraus verwenden. Auf die Weise kannst du dir allmählich deinen eigenen »Baukasten« zusammensetzen, der für jedes neue Programm wieder einsetzbar ist. Wir probieren das hier einmal mit unserer zahlwort-Funktion aus.

Der Code sieht jetzt also so aus:

def zahlwort(zahl):
einer = ["null", "ein", "zwei", "drei", "vier", u"fünf", "sechs", "sieben",
"acht", "neun", "zehn", "elf", u"zwölf", "dreizehn", "vierzehn",
u"fünfzehn", "sechzehn", "siebzehn", "achtzehn", "neunzehn"]
zehner = ["null", "zehn", "zwanzig", u"dreißig", "vierzig", u"fünfzig",
"sechzig", "siebzig", "achtzig", "neunzig", "hundert"]

if zahl < 20:
wort = einer[zahl]
if zahl == 1:
wort = "eins"
else:
z = zahl // 10
e = zahl % 10
wort = einer[e]+"und"+zehner[z]
if e == 0:
wort = zehner[z]
return wort

Diesen Code speicherst du jetzt als Datei unter dem Namen zwort.py ab. zwort ist dabei der Name des Moduls. Die Endung .py kennzeichnet, dass es ein Python-Programm ist. Achte darauf, dass du die Datei im selben Verzeichnis speicherst wie alle deine anderen Python-Programme, insbesondere das, das dieses Modul importieren will.

Um dein eigenes Modul jetzt in einem neuen Programm zu verwenden, gehst du genauso vor wie bei der Verwendung von random, math oder gturtle. Zum Beispiel so:

import zwort
x = input("Zahl eingeben")
msgDlg(zwort.zahlwort(x))

oder so:

from zwort import *
x = input("Zahl eingeben")
msgDlg(zahlwort(x))

Bei der ersten Lösung wird dein Modul zwort Python als Bibliothek zur Verfügung gestellt, und um die Funktion zahlwort() zu verwenden, musst du immer zuerst den Modulnamen schreiben, dann einen Punkt, dann den Funktionsnamen, also

zwort.zahlwort(x)

Bei der zweiten Variante importierst du alle Funktionen aus dem Modul zwort direkt in dein Python-Programm (in diesem Fall ist es ja nur eine Funktion) – deswegen musst du den Modulnamen zwort nicht mehr voranstellen.

Also alles genauso, wie du es schon kennst – nur eben mit deinem eigenen Modul.

[ ! ]  Achtung: Das Modul im selben Verzeichnis speichern

Damit Python das Modul wirklich findet, musst du das neue Programm vor dem Ausführen erst einmal abspeichern – im selben Verzeichnis wie die Moduldatei. Dann kann das Modul problemlos importiert werden, weil Python nun weiß, wo es gesucht werden muss.

Falls das Modul beim Laden eine Fehlermeldung ausgibt, die etwa so aussieht: »Non ASCII character in file zwort.py but no encoding declared«, dann füge folgende Zeile als erste Zeile in das Modul zwort.py ein, die TigerJython mitteilt, welche Kodierung hier verwendet werden soll:

# -*- coding: utf-8 -*-

Damit wird die Zeichenkodierung für das Modul auf jeden Fall korrekt erkannt und verwendet. Dies ist nur wegen der Umlaute auf manchen Systemen notwendig. Bei Modulen, die keine deutschen Umlaute verwenden, gibt es so ein Problem nicht.