Ein frei kopier- und anpassbares Lehrmittel von eduskript.org

Funktionen

Lernziele
  • Sie verstehen, was eine Funktion ist und wie Sie diese in Python definieren.
  • Sie können eine Funktion mit Parametern definieren und verwenden.
  • Sie verstehen, wie Sie mit return einen Wert zurückgeben können.

Wenn man ein Problem endlich gelöst hat, wäre es doch schön, diese Lösung immer wieder verwenden zu können. Das geht mit Funktionen!

Funktionen sind Unterprogramme des Hauptprogramms, die eine bestimmte Aufgabe erledigen. Sie können so eigene Befehle kreieren und immer wieder verwenden, wann immer Sie diese Funktion brauchen.

Syntax

Um die Syntax einer Funktion zu verstehen, schauen wir ein Beispiel an: Sagen wir, wir müssen immer wieder den Flächeninhalt eines Quadrats berechnen. Anstatt die Rechnung immer wieder aufzuschreiben, bietet es sich an, eine Funktion zu schreiben. Das könnte so aussehen:

PythonLoading editor…
# Funktion zur Berechnung des Flächeninhalts eines Quadrats
def flaeche_quadrat(seitenlaenge):
    flaeche = seitenlaenge * seitenlaenge # seitenlaenge**2 würde auch funktionieren
    return flaeche

# Hauptprogramm
print("Der Flächeninhalt eines Quadrats mit Seitenlänge 5 ist:", flaeche_quadrat(5))
print("Der Flächeninhalt eines Quadrats mit Seitenlänge 10 ist:", flaeche_quadrat(10))

# Den Wert der Funktion in einer Variablen speichern
flaeche = flaeche_quadrat(20)
print("Der Flächeninhalt eines Quadrats mit Seitenlänge 20 ist:", flaeche)

Hier wird eine Funktion flaeche_quadrat definiert, die eine Seitenlänge als Parameter erwartet und dann verarbeitet. Die Funktion nimmt diese Seitenlänge und berechnet damit den Flächeninhalt des Quadrats. Letztlich gibt sie den Wert zurück ans Hauptprogramm.

Beachten Sie:

  • Eine Funktion wird mit dem Schlüsselwort def definiert.
  • Danach folgt der Name der Funktion, hier also flaeche_quadrat.
  • Dann runde Klammern (), um die Parameter zu definieren.
  • Danach folgt ein Doppelpunkt :, der den Beginn des Funktionskörpers markiert.
  • Der Code, der zur Funktion gehört, wird eingerückt im Körper des Codeblocks geschrieben.
  • Mit return geben Sie den Wert zurück, den die Funktion berechnet hat. So können Sie den Wert im Hauptprogramm weiterverwenden.
  • Im Hauptprogramm nutzen wir die Funktion, indem wir ihren Namen aufrufen und die Seitenlänge als Argument in den runden Klammern übergeben. Das Argument wird dann in der Funktion ins Parameter seitenlaenge abgefüllt.

Beispiele

Eine Funktion ohne Parameter und ohne return-Wert

Parameter und return-Wert sind optional. Sie können auch eine Funktion ohne Parameter und ohne return-Wert definieren. Zum Beispiel eine Funktion, die einfach nur etwas ausgibt:

PythonLoading editor…
# Funktion, die eine Nachricht ausgibt
def begruessung():
    print("Hallo, willkommen zu unserem Programm!")

# Hauptprogramm
begruessung()
print("Das Programm läuft weiter...")
begruessung()

Flächeninhalt eines Rechtecks (eine Funktion mit zwei Parametern und mit return-Wert)

Sagen wir, Sie wollen eine Funktion schreiben, die den Flächeninhalt eines Rechtecks berechnet. Diese Funktion könnte so aussehen:

PythonLoading editor…
# Funktion zur Berechnung des Flächeninhalts eines Rechtecks
def flaeche_rechteck(breite, laenge):
    flaeche = breite * laenge
    return flaeche

# Hauptprogramm
print("Der Flächeninhalt eines Rechtecks mit Breite 5 und Länge 10 ist:", flaeche_rechteck(5, 10))
print("Der Flächeninhalt eines Rechtecks mit Breite 20 und Länge 30 ist:", flaeche_rechteck(20, 30))

Hier wird eine Funktion flaeche_rechteck definiert, die Breite und Länge als Eingabeparameter erwartet. Die Funktion berechnet dann den Flächeninhalt des Rechtecks und gibt den Wert zurück ans Hauptprogramm.

Aufgaben

Aufgabe: Volumen eines Würfels

Schreiben Sie eine Funktion volumen_wuerfel, die das Volumen eines Würfels berechnet.

PythonLoading editor…
# Ihr Code
Mögliche Lösung
def volumen_wuerfel(seitenlaenge):
    volumen = seitenlaenge ** 3 # seitenlaenge * seitenlaenge * seitenlaenge
    return volumen

# Hauptprogramm
print("Das Volumen eines Würfels mit Seitenlänge 5 ist:", volumen_wuerfel(5))
print("Das Volumen eines Würfels mit Seitenlänge 10 ist:", volumen_wuerfel(10))

Aufgabe: Volumen eines Quaders

Schreiben Sie eine Funktion volumen_quader, die das Volumen eines Quaders berechnet. Die Funktion soll drei Parameter für die Länge, Breite und Höhe des Quaders haben.

PythonLoading editor…
# Ihr Code
Mögliche Lösung
def volumen_quader(lange, breite, hoehe):
    volumen = lange * breite * hoehe
    return volumen
# Hauptprogramm
print("Das Volumen eines Quaders mit Länge 5, Breite 10 und Höhe 2 ist:", volumen_quader(5, 10, 2))
print("Das Volumen eines Quaders mit Länge 3, Breite 4 und Höhe 5 ist:", volumen_quader(3, 4, 5))

Aufgabe: Volumen eines Kegels

Schreiben Sie eine Funktion volumen_kegel, die das Volumen eines Kegels berechnet. Die Funktion soll zwei Parameter für den Radius der Basis und die Höhe des Kegels haben. Die Formel für das Volumen eines Kegels lautet: V=13πr2hV = \frac{1}{3} \pi r^2 h, wobei Sie für π\pi die Konstante math.pi aus dem Modul math verwenden können.

PythonLoading editor…
# Ihr Code
Mögliche Lösung
PythonLoading editor…
import math
def volumen_kegel(radius, hoehe):
    volumen = (1/3) * math.pi * (radius ** 2) * hoehe
    return volumen
# Hauptprogramm
print("Das Volumen eines Kegels mit Radius 3 und Höhe 5 ist:", volumen_kegel(3, 5))
print("Das Volumen eines Kegels mit Radius 2 und Höhe 10 ist:", volumen_kegel(2, 10))

Berechnung des Volumens eines komischen Hauses

Nutzen Sie Ihre zuvor erstellten Funktionen, um das Volumen dieses Hauses zu berechnen. Speichern Sie das Endresultat zwingend in einer Variablen namens summe.

PythonLoading editor…
# Ihr Code
Mögliche Lösung
PythonLoading editor…
import math
def volumen_wuerfel(seitenlaenge):
    volumen = seitenlaenge ** 3
    return volumen

def volumen_quader(lange, breite, hoehe):
    volumen = lange * breite * hoehe
    return volumen

def volumen_kegel(radius, hoehe):
    volumen = (1/3) * math.pi * (radius ** 2) * hoehe
    return volumen

# Hauptprogramm
summe = volumen_quader(15,5,5) + \
        volumen_quader(4,1.5,1.5) + \
        volumen_wuerfel(5) + \
        volumen_kegel(3,11) + \
        volumen_kegel(3.5,11)

print("Das Gesamtvolumen ist:", summe)

Der Unterschied zwischen print() und return

  • Mit print() geben Sie einen Wert auf dem Bildschirm aus. Es ist dazu da, uns Menschen anzuzeigen, was im Speicher vor sich geht.
  • Mit return schicken Sie einen Wert aus einer Funktion zurück ans Hauptprogramm an die Stelle, wo die Funktion aufgerufen wurde.

Das zeigt dieses Beispiel:

PythonLoading editor…
def return_und_print(zahl):
    print("Die Funktion hat diese Zahl erhalten:", zahl)
    print("Jetzt geben wir das Doppelte der Zahl zurück, nämlich:", zahl * 2)
    return zahl * 2

beispiel1 = return_und_print(42)
print("Im Hauptprogramm ist der Wert wegen return:", beispiel1)

print(" ------ NEUES BEISPIEL --------- ")

beispiel2 = return_und_print(123)
print("Im Hauptprogramm ist der Wert wegen return:", beispiel2)

Falls Sie die Funktion mit print() aufrufen, sehen Sie zwar die Ausgabe in der Console, können das Resultat aber im Hauptprogramm nicht weiterverwenden. Bei der Funktion mit return erhalten Sie einen Wert, den Sie beliebig wiederverwenden können.

Achtung: Schreiben Sie nicht gleichzeitig print() und return in derselben Funktion, wenn Sie den Wert brauchen. Denn print() zeigt nur an, return gibt den Wert erst wirklich zurück.

Funktionen aus anderen Dateien importieren

In Python können Sie Funktionen aus anderen Dateien importieren, um Ihren Code zu organisieren und wiederverwendbar zu machen. Dazu speichern Sie Ihre Funktionen in einer separaten Datei, z.B. useful.py, und importieren diese in Ihrem Hauptprogramm.

Hier ist ein Beispiel, wie Sie das machen können. Wechseln Sie in den Reitern oben zwischen den Dateien hin und her, um sich den jeweiligen Python-Code anzuschauen:

PythonLoading editor…
import useful

print("Der Flächeninhalt eines Quadrats mit Seitenlänge 5 ist:", useful.flaeche_quadrat(5))
print("Der Flächeninhalt eines Rechtecks mit Breite 5 und Länge 10 ist:", useful.flaeche_rechteck(5, 10))

Eine Art, diese Funktionen in Ihrem Hauptprogramm zu verwenden, kennen Sie bereits: import useful, genau wie Sie import turtle oder import random verwenden. Dann können Sie die Funktionen unter dem Namen useful aufrufen, z.B. useful.flaeche_quadrat(5).

Es gibt aber auch eine Art, die Funktionen direkt in Ihr Hauptprogramm zu importieren, sodass Sie sie ohne den Präfix useful. verwenden können. Dazu verwenden Sie das Schlüsselwort from:

PythonLoading editor…
from useful import flaeche_quadrat, flaeche_rechteck

print("Der Flächeninhalt eines Quadrats mit Seitenlänge 5 ist:", flaeche_quadrat(5))
print("Der Flächeninhalt eines Rechtecks mit Breite 5 und Länge 10 ist:", flaeche_rechteck(5, 10))