Fachkonzept - Prozedur
Funktionen ohne Rückgabe
Wir betrachten die Funktionen zum Laden und Speichern von Texten in Dateien etwas genauer.
def textAusDatei(dateiname): datei = open(dateiname, 'r', encoding='iso-8859-1') text = datei.read() datei.close() return text def textInDateiSpeichern(dateiname, text): datei = open(dateiname, 'w', encoding='iso-8859-1') datei.write(text) datei.close()
Es fällt auf, dass die beiden Funktionen sich in einem Punkt wesentlich unterscheiden: Während die
Funktion textAusDatei
zum Laden eines Textes eine Rückgabe vorsieht
(nämlich den geladenen Text), gibt es bei der Funktion textInDateiSpeichern
zum Speichern eines Textes keine Rückgabe.
Dieser Unterschied zeigt sich auch bei Funktionsaufrufen.
text = textAusDatei('klartext.txt') # ... textInDateiSpeichern('geheimtext.txt', 'ZPTZHSHIPT')
Ein Aufruf der Funktion textAusDatei
liefert ein Ergebnis, das verwaltet oder weiterverarbeitet
werden muss. Der Funktionsaufruf textAusDatei('klartext.txt')
ist hier daher (als Term auf der
rechten Seite) in eine Zuweisung eingebunden.
Ganz anders wird die Funktion textInDateiSpeichern
benutzt. Der Aufruf
textInDateiSpeichern('geheimtext.txt', 'ZPTZHSHIPT')
erzeugt kein Ergebnis und
stellt eine eigenständige Anweisung dar.
Zur Verdeutlichung dieses Unterschieds führen wir für Funktionen ohne Rückgaben einen neuen Namen ein.
Fachkonzept - Prozedur
Eine Prozedur ist eine Funktion, die keine Rückgabe erzeugt.
Für die Praxis besonders wichtig ist der folgende Unterschied.
Prozeduraufrufe (d.h. Funktionsaufrufe, die keine Rückgabe erzeugen) sind eigenständige Anweisungen.
Funktionsaufrufe, die eine Rückgabe erzeugen, sind Terme, für die in Programmen immer eine Verwaltung oder Verarbeitung vorgesehen werden muss. Nur in interaktiven Python-Dialogen kann man sie direkt auswerten lassen.
Den Unterschied zwischen Prozeduren und Funktionen mit Rückgaben deuten wir auch durch die Wahl der Bezeichner an. Prozedurnamen beschreiben einen Vorgang und enthalten immer ein Verb im Infinitiv (wie textInDateiSpeichern). Funktionsnamen bei Funktionen mit Rückgaben beschreiben das Ergebnis (wie textAusDatei).
Exkurs - Funktionen ohne Übergabedaten
Funktionen können auch so definiert werden, dass keine Daten zur Verarbeitung übergeben werden.
def textAusDatei(): datei = open('klartext.txt', 'r', encoding='iso-8859-1') text = datei.read() datei.close() return text def textInDateiSpeichern(text): datei = open('geheimtext.txt', 'w', encoding='iso-8859-1') datei.write(text) datei.close() # Testprogramm text = textAusDatei() # ... textInDateiSpeichern('ZPTZHSHIPT')
Im vorliegenden Programmbeispiel werden immer dieselben Dateien zum Laden und Speichern von Texten benutzt.
Die Funktion textAusDatei
benötigt hier keine übergebenen Daten, um ihre
Aktionen auszuführen.
Auch Prozeduren können ohne Übergabedaten definiert werden. Im vorliegenden Programmbeispiel
kommt die Prozedur close
zum Schließen einer Datei vor.
Diese Prozedur erhält ebenfalls keine übergebenen Daten bei einem Aufruf.