Kommentare 1

Zum Frühlingsbeginn: Einfache Funktionsdefinitionen in Python

Nein, unsere Codeschnipsel-Ecke wurde nicht abgeschafft. Sie hat nur Winterschlaf gehalten. Zugegebenermaßen recht lange.  Nun, da der Frühling zwar nicht wettertechnisch, aber immerhin astronomisch beginnt, gibt’s endlich noch mal eine Erklärung mit Code. Im Fokus des folgenden Beitrags: Die leicht zu erlernende Programmiersprache Python, zwei Funktionsdefinitionen, Veronika – und der Lenz (Konzept/Originaltext von Allen B. Downey, Übersetzung von Stefan Fröhlich, redaktionelle Überarbeitung: AP).

Eine Funktionsdefinition gibt den Namen einer neuen Funktion sowie die Reihe von Anweisungen an, die beim Aufruf der Funktion ausgeführt werden sollen. Hier ein Beispiel:

 >>> def zeige_text():
    print "Veronika, der Lenz ist da."
    print "Die Mädchen singen trallala."

def ist ein Schlüsselwort, das eine Funktionsdefinition kennzeichnet. Der Name dieser Funktion lautet zeige_text. Die Regeln für Funktionsnamen sind die gleichen wie für Variablennamen: Buchstaben, Zahlen und einige Interpunktionszeichen sind zulässig, aber das erste Zeichen darf keine Zahl sein. Außerdem dürfen Sie kein Schlüsselwort als Funktionsnamen wählen. Und Sie sollten vermeiden, für eine Funktion und eine Variable denselben Namen zu verwenden.

Die leeren Klammern nach dem Namen zeigen an, dass diese Funktion keine Argumente erwartet.

Die erste Zeile der Funktionsdefinition bezeichnet man als Header, den Rest als Body. Der Header muss mit einem Doppelpunkt enden, und der Body muss eingerückt sein. Per Konvention muss der Body immer um vier Leerzeichen eingerückt sein. Der Body kann eine beliebige Anzahl von Anweisungen enthalten.

Die Strings der „print-Anweisungen sind in doppelte Anführungszeichen eingeschlossen (Sie können auch einfache verwenden).

Wenn Sie eine Funktionsdefinition im interaktiven Modus eingeben, gibt der Interpreter Auslassungszeichen (…) aus, um Sie darauf hinzuweisen, dass die Definition noch nicht vollständig ist:

 >>> def zeige_text():
...    print "Veronika, der Lenz ist da."
...    print "Die Mädchen singen trallala."
...

Zum Abschließen der Funktion müssen Sie eine Leerzeile eingeben (in einem Skript ist das natürlich nicht erforderlich).

Durch die Definition der Funktion wird eine Variable desselben Namens angelegt.

 >>> print zeige_text
>>>  type(zeige_text)
<function zeige_text at 0xb7e99e9c>
<type 'function'>

Der Wert von zeige_text ist ein Funktionsobjekt vom Typ ‚function‘.

Die Syntax für den Aufruf einer neuen Funktion ist dieselbe wie für integrierte Funktionen:

 >>> zeige_text()
Veronika, der Lenz ist da.
Die Mädchen singen trallala.

Sobald Sie eine Funktion definiert haben, können Sie sie auch innerhalb anderer Funktionen verwenden. Beispielsweise könnten wir eine Funktion mit dem Namen wiederhole_refrain schreiben, die den Refrain wiederholt.

def wiederhole_refrain():
    zeige_text()
    zeige_text()

Dann rufen wir wiederhole_refrain auf:

 >>> wiederhole_refrain()
Veronika, der Lenz ist da.
Die Mädchen singen trallala.
Veronika, der Lenz ist da.
Die Mädchen singen trallala.

Wenn wir alle Codeteile zusammenstellen, sieht das Programm folgendermaßen aus:

1
2
3
4
5
6
7
8
9
def zeige_text():
    print "Veronika, der Lenz ist da."
    print "Die Mädchen singen trallala."
 
def wiederhole_refrain():
    zeige_text()
    zeige_text()
 
wiederhole_refrain()

Dieses Programm enthält zwei Funktionsdefinitionen: zeige_text und wiederhole_refrain. Funktionsdefinitionen werden genau so wie andere Anweisungen ausgeführt, als Ergebnis werden aber Funktionsobjekte angelegt. Die Anweisungen innerhalb der Funktion werden erst dann ausgeführt, wenn die Funktion aufgerufen wird. Die Funktionsdefinition selbst erzeugt keinerlei Ausgabe.

Wie Sie sich sicher denken können, müssen Sie eine Funktion erst erstellen, bevor Sie sie ausführen können.

Wenn Sie Lust haben auf:

  • mehr Funktionen
  • mehr Python
  • einen verständlichen Einstieg in die Welt der Programmierung

Dann empfehlen wir:

Programmieren lernen mit Python

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.