Kapitel 6
Funktionen
156
Hintergrund: Call by Object
Bei Programmiersprachen wie Java oder C gibt es bei Funktionsaufrufen die Unterschei-
dung zwischen call by value und call by reference. Beim call by value wird der Funktion ein
Wert übergeben, der von der Funktion verarbeitet wird, ohne dass dies Auswirkungen auf
das Originalobjekt hätte. Im Fall eines call by reference erhält die Funktion eine Referenz
– einen Zeiger – auf ein Objekt. Damit kann sie auf eine Variable »außerhalb der Funktion«
zugreifen und Veränderungen vornehmen. Diese Unterscheidung gibt es bei Python nicht.
Bei Python werden immer Objekte (oder Namen von Objekten) übergeben. Man spricht des-
halb auch von call by object. Ob ein Objekt von einer Funktion verändert werden kann, hängt
allein von seinem Typ ab. Es gibt veränderbare Objekte (z.B. Listen) und unveränderbare
Objekte (z.B. Zahlen).
6.2 Definition von Funktionen
Eine Funktion wird durch eine besondere Anweisung definiert. Sie hat folgendes Format:
Die Definition besteht aus zwei Teilen, einem Kopf und einem Körper.
Der Funktionskopf beginnt mit dem Schlüsselwort def, gefolgt vom Funktionsnamen
und einer eventuell leeren Liste so genannter formaler Parameter (Parameterliste) in
runden Klammern. Am Ende des Kopfes steht ein Doppelpunkt.
Der Funktionskörper ist ein Anweisungsblock, also eine Folge von Anweisungen, die
gegenüber der Kopfzeile eingerückt ist. Die erste Zeile des Funktionskörpers kann einen
so genannten Docstring enthalten. Das ist ein Text zur Dokumentation der Funktion,
der in dreifachen Anführungszeichen steht. Wenn die Funktion einen Wert zurückge-
ben soll, muss der Funktionskörper eine
return-Anweisung enthalten.
Im folgenden Beispiel hat die Funktion den Namen
primzahl und der einzige formale Para-
meter heißt
zahl. Die Funktion prüft, ob die als Argument übergebene Zahl eine Primzahl
ist. Ist das der Fall, gibt sie den Wert
True zurück und sonst False.
def funktionsname (parameterliste):
anweisungsblock
def primzahl (zahl):
if zahl <= 2:
prim = False
else:
for i in range(2,zahl//2):
if zahl % i == 0: # Teiler gefunden
prim = False
break
else:
prim = True # kein Teiler gefunden
return prim
157
6.2
Definition von Funktionen
Der formale Parameter zahl wird im Funktionskörper wie eine Variable verwendet. Falls
zahl <= 2 ist, handelt es sich um eine Primzahl. Ansonsten wird in der for-Schleife ein Tei-
ler gesucht. Falls
zahl % i gleich null ist, ist i ein Teiler für zahl und es handelt sich nicht
um eine Primzahl. Die Variable
prim erhält den Wert. Anschließend wird mit break die
Schleife abgebrochen. Die
else-Klausel der for-Schleife wird nur dann erreicht, falls kein
Teiler gefunden worden ist; dort erhält dann
prim den Wert True. Zum Schluss wird in der
(einzigen)
return-Anweisung der Inhalt von prim zurückgegeben.
Wenn Sie mit Idle arbeiten, geben Sie die Funktionsdefinition am besten in einem IDLE-
Editorfenster ein. Speichern Sie den Programmtext und starten Sie ihn mit
RUN|RUN
MODULE
. Im Shell-Fenster erscheint eine Restart-Meldung. Danach ist die Funktionsdefini-
tion dem Laufzeitsystem bekannt und Sie können die Funktion im Shell-Fenster aufrufen
(Abbildung 6.2). Beispielaufrufe:
Abb. 6.2: Eine Funktion können Sie in einem Editor-Fenster editieren und im
Shell-Fenster testen.
Die relativ lange Primzahl 131071 = 2
17
-1 wurde übrigens bereits im Jahre 1588 von dem
italienischen Mathematiker Pietro Cataldi entdeckt – völlig ohne Computer.
>>> primzahl (131071)
True
>>> primzahl (4)
False

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.