Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

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.

black box
black box

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.

X

Fehler melden

X

Suche