Drücken Sie „Enter“, um den Inhalte zu überspringen

Python | Funktionen

Funktionen

In den vorherigen Abschnitten sind wir bereits auf ein paar solcher Funktionen gestoßen, ohne es direkt zu bemerken, oder diese als solche bezeichnet zu haben. So haben wir unter Anderem bereits die integrierte Funktion print()kennengelernt, um Zeichen auf dem Bildschirm auszugeben.

Der Begriff Funktion stammt aus der imperativen Programmierung. Diese gehört zu den ältesten Programmiertechniken und ist beispielsweise in den Programmiersprachen C oder Pascal zu finden. Die imperative Programmierung zeichnet dabei aus, dass der Programmcode „von oben nach unten“ verarbeitet und ausgeführt wird. Die Programmiersprache Pascal unterscheidet dabei zwischen Procedures (Prozeduren) und Functions (Funktionen), wobei Prozeduren Funktionen ohne Rückgabewerte sind.

Die „moderneren“ objektorientierten Programmiersprachen, wie C#, Java oder auch Python, unterstützen auch die imperative Programmierung. Das heißt, wir müssen hier nicht unbedingt objektorientiert programmieren, auch wenn das der bevorzugte Weg sein sollte.

So darf in Python beispielsweise ein Programm einfach so aussehen:

print("Hello World")
a = 1 + 2
print(a)

Das Programm wird „von oben nach unten“ abgearbeitet, indem es zunächst den Text "Hello World" auf dem Bildschirm ausgegeben wird, dann die Addition 1 + 2 in der Variablen a gespeichert und zum Schluss ebenfalls auf dem Bildschirm ausgegeben wird.

In der objektorientierten Programmierung sprechen wird üblicherweise aber von Methoden und wir sollten diesen Begriff daher auch konsequent verwenden.

Methoden werden in Python mit dem Schlüsselwort def eingeleitet. Der anschließende, eingerückte Block enthält alle Anweisungen, die innerhalb dieser Methode ausgeführt werden sollen. Variablen, die innerhalb einer Methode deklariert werden, heißen lokale Variablen und haben nur innerhalb der Methode Gültigkeit. Das heißt, wir können außerhalb der Methode, oder von anderen Methoden aus, nicht auf die Werte dieser Variablen zugreifen.

Achtung: Vermeide Namensgleichheit von internen Variablen mit externen Variablen. Wenn bereits im Programmkopf (oder später im Kopf einer Klasse) eine Variable deklariert wurde, sollte innerhalb von Methoden für Variablen andere Namen verwendet werden. Denn dies kann andernfalls zu Problemen führen: Variablen innerhalb von Methoden überblenden bei Namensgleichheit die übergeordneten Variablen. Und das kann leicht zu ungewollten Nebeneffekten führen.

Es folgt nun ein Beispiel für (sehr) einfache Methode ohne Rückgabewerte, inkl. Aufruf:

def sayHello():
    print ("Hello")

sayHello()

Dieses Programm schreibt den Text „Hello“ auf den Bildschirm, indem bei Programmstart zunächst die Methode sayHello() aufgerufen wird. Innerhalb dieser Methode wird über die interne Methode print der Text „Hello“ auf dem Bildschirm ausgegeben.

Methoden mit Parametern

Wie bereits an der internen Methode print zu erkennen ist, können Methoden Parameter übergeben bekommen, also Werte, welche die Methode bei der Ausführung benötigt. Im Fall von „print“ wird hier eine Zeichenkette (im Beispiel „Hello“) als Parameter übergeben.

Beispiele für Methoden mit Parametern können sein:

def say(text):
    print("Simon sagt: " + text)

def addition (a, b):
    print(a+b)

say ("Hallo Welt!")
addition(3, 4)

Benötigt eine Methode mehr als einen Parameter, so werden die einzelnen Parameter mit Kommata voneinander getrennt, wie in der Methode addition gezeigt.

Methoden mit Rückgabewerten

Methoden werden aber nicht nur verwendet, um nur einzelne Anweisungen auszuführen, sondern auch, um im Anschluss an die Ausführung einzelner Anweisungen einen Rückgabewert an den vorherigen Programmablauf zurückzugeben. Das können Ergebnisse von Berechnungen sein, oder Werte aus Datenbanken oder Dateien. Rückgabewerte können grundsätzliche alles sein, was die Anwendung benötigt.

Eine Methode liefert Rückgabewerte über das Schlüsselwort return zurück:

def say(text):
    return "Simon sagt " + text

print(say("Hello"))

Hier gibt die Methode say selbst gar keinen Text auf dem Bildschirm aus, sondern liefert nur einen Text an den vorherigen Programmablauf zurück. Über die print Methode lassen wir diesen Text aus dem Hauptprogramm heraus unmittelbar auf dem Bildschirm anzeigen. Denkbar wäre hier aus, den Rückgabewert zunächst in einer Variablen zwischenzuspeichern:

def say(text):
    return "Simon sagt " + text

ausgabe = say("Hello")
print(ausgabe)

Hier wird der Rückgabewert zunächst in der Variablen „ausgabe“ gespeichert, bevor dessen Inhalt über die Methode print auf dem Bildschirm ausgegeben wird.

Fragen

  1. Was könnte ein Grund für die Verwendung von Methoden im Programmcode sein?

  2. Wann, also zu welchem Zeitpunkt im Programmablauf, wird der Programmcode einer Methode ausgeführt?

  3. Welche Begriffe für Methoden gibt es noch und worin unterscheiden sich diese Begriffe?

  4. Was ist mit dem Begriff lokale Variable gemeint?

  5. Was ist ein Rückgabewert einer Methode?

Share This

Share This

Share this post with your friends!