Python für Anfänger · Teil 12TutorialEinsteiger

Python

Python für Anfänger – Teil 12: Eigene Funktionen und Rückgabewerte

Gliedere Berechnungen in wiederverwendbare Bausteine mit klaren Ein- und Ausgaben.

Veröffentlicht am

3 Minuten Lesezeit

Voraussetzungen

Du kennst die Inhalte aus Teil 11 und arbeitest mit einem lokalen Python-3-Interpreter (ab Python 3.10), beispielsweise in Thonny.

Das lernst du in dieser Lektion

  • Def und return verwenden.
  • Parameter und Argumente unterscheiden.
  • Lokale Variablen verstehen.

Eine Berechnung bekommt einen Namen

Wir möchten den Materialbedarf an mehreren Stellen berechnen. Eine Funktion bündelt diese Aufgabe:

def berechne_bedarf(anzahl, gewicht_pro_teil_g):
    bedarf_g = anzahl * gewicht_pro_teil_g
    return bedarf_g

ergebnis = berechne_bedarf(4, 18.5)
print(f"Bedarf: {ergebnis:.1f} g")

Speichere funktionen.py. def beginnt die Definition. Die Namen in den Klammern sind Parameter. Beim Aufruf sind 4 und 18.5 die übergebenen Argumente. Der eingerückte Körper läuft erst beim Aufruf, nicht schon bei der Definition.

return ist keine Bildschirmausgabe

return beendet den aktuellen Funktionsaufruf und gibt einen Wert an die aufrufende Stelle zurück. Dadurch kann das Ergebnis gespeichert, weiterverarbeitet oder ausgegeben werden. print() zeigt dagegen etwas an und liefert normalerweise None zurück.

Eine Funktion ohne ausgeführtes return liefert ebenfalls None. Das wird zum Problem, wenn du mit dem vermeintlichen Ergebnis weiterrechnen willst. Halte Rechnen und Ausgeben möglichst auseinander: Eine Berechnungsfunktion gibt eine Zahl zurück; die Oberfläche entscheidet über den Text.

Standardwerte verwenden

def berechne_bedarf(anzahl, gewicht_pro_teil_g, reserve_prozent=0):
    faktor = 1 + reserve_prozent / 100
    return anzahl * gewicht_pro_teil_g * faktor

print(berechne_bedarf(4, 18.5))
print(berechne_bedarf(4, 18.5, reserve_prozent=10))

Ohne Reserve erhältst du 74.0, mit zehn Prozent Reserve näherungsweise 81.4. Die benannte Übergabe reserve_prozent=10 macht deutlich, wofür die Zahl steht. Ein Standardwert folgt in dieser einfachen Form auf die Parameter ohne Standardwert.

Lokale Variablen

faktor ist innerhalb der Funktion lokal. Die übrigen Programmteile sollen sich nicht darauf verlassen, dass sie auf diesen Namen zugreifen können. Übergib benötigte Werte als Parameter und verwende Rückgabewerte. Das macht den Baustein leichter verständlich und prüfbar.

Kurz dokumentieren und prüfen

Ein String direkt am Anfang einer Funktion ist ein Docstring:

def kosten_eur(gewicht_g, preis_pro_kg):
    """Berechnet die Filamentkosten für ein Gewicht in Gramm."""
    return gewicht_g / 1000 * preis_pro_kg

print(kosten_eur(100, 20))

Die Ausgabe muss 2.0 sein. Prüfe Funktionen zuerst mit Werten, deren Ergebnis du leicht von Hand berechnen kannst. Für Gleitkommazahlen ist eine formatierte Ausgabe oder ein Toleranzvergleich sinnvoller als blind auf exakte Gleichheit zu setzen.

Eine Funktion sollte eine klar erkennbare Aufgabe haben. Wenn ihr Name schon „lesen_und_rechnen_und_speichern“ lautet, lohnt sich meistens eine Aufteilung.

Mitmach-Aufgabe

Schreibe rest_nach_druck(rest_g, verbrauch_g). Die Funktion soll den neuen Restwert zurückgeben. Rufe sie mit 750 und 74 auf und gib das Ergebnis außerhalb der Funktion aus.

Versuche die Aufgabe zuerst selbst. Vergleiche danach deinen Ansatz mit der Musterlösung. Andere Lösungen sind möglich, wenn sie dieselben Anforderungen erfüllen.

Musterlösung

def rest_nach_druck(rest_g, verbrauch_g):
    """Zieht den Verbrauch vom vorhandenen Material ab."""
    return rest_g - verbrauch_g

neuer_rest_g = rest_nach_druck(750, 74)
print(f"Neuer Rest: {neuer_rest_g} g")

Ergebnis prüfen

Das Ergebnis lautet 676 g. Die Funktion selbst erzeugt keine Ausgabe. Die Prüfung auf zu hohen Verbrauch ergänzen wir beim Abschlussprojekt.

Typische Stolperstellen

Rufe eine Funktion erst auf, nachdem ihre Definition ausgeführt wurde. Code nach einem bedingungslos ausgeführten return ist in diesem Funktionsaufruf nicht erreichbar.

Was du jetzt kannst

  • Def und return verwenden.
  • Parameter und Argumente unterscheiden.
  • Lokale Variablen verstehen.

Passendes Cheatsheet

Zum Nachschlagen: Cheatsheet 09 – Funktionen und Rückgabewerte. Dort findest du auch den vorhandenen PDF-Download.

Im nächsten Teil

In Teil 13 geht es um Fehler verstehen und Eingaben absichern. Lies Fehlermeldungen, fange erwartbare Eingabefehler gezielt ab und untersuche Programme schrittweise.

← Teil 11 · Kursübersicht · Weiter zu Teil 13 →