Lektionen des Moduls (1/4)
def und return
Eine Funktion ist ein wiederverwendbarer Codeblock: Du definierst sie einmal mit
def und rufst sie dann so oft auf, wie du möchtest. Funktionen machen den Code modular,
testbar und selbstdokumentierend.
Grundlegende Syntax
def saluta(nome):
return f"Ciao, {nome}!"
saluta("Ada") # 'Ciao, Ada!'defleitet die Funktion ein, gefolgt vom Namen und den Parametern in Klammern.- Der
:öffnet den eingerückten Block. returngibt einen Wert an den Aufrufer zurück und beendet die Funktion.
Explizites return vs. implizites None
Wenn du kein return schreibst, gibt die Funktion implizit None zurück:
def stampa_e_basta(x):
print(x)
risultato = stampa_e_basta("ciao")
# prints 'ciao'
print(risultato) # NoneEin bloßes return (ohne Wert) gibt ebenfalls None zurück, kann aber als vorzeitiger
Ausstieg dienen:
def primo_pari(nums):
for n in nums:
if n % 2 == 0:
return n
return None # explicit: communicates "not found"Mehrere Werte? Gib ein Tupel zurück
Python hat keine "Out-Parameter": Um mehr als eine Sache zurückzugeben, gib ein Tupel zurück (das oft vom Aufrufer entpackt wird).
def divisione_resto(a, b):
return a // b, a % b
quoziente, resto = divisione_resto(17, 5)
# 3, 2Docstring: Integrierte Dokumentation
Der erste String innerhalb der Funktion ist der Docstring: Er wird in
help(fn) und als Tooltip in IDEs angezeigt.
def area_cerchio(raggio):
"""Calcola l'area di un cerchio dato il raggio."""
import math
return math.pi * raggio ** 2Gültigkeitsbereich (Scope): Lokale Variablen
Variablen, die innerhalb einer Funktion definiert sind, sind lokal: Sie existieren außerhalb nicht.
def f():
x = 10
return x
f() # 10
x # NameError: name 'x' is not definedFunktionen geben immer etwas zurück
In Python gibt eine Funktion, wenn sie keine explizite return-Anweisung deklariert oder ein leeres return enthält, implizit den speziellen Wert None zurück. Es gibt keine Funktionen, die keinen Wert zurückgeben.
Probiere es aus
Definiere eine Funktion `double(x)`, die `x * 2` zurückgibt. Rufe sie dann mit 7 auf und weise das Ergebnis `result` zu. Evaluiere `result`.
Hinweis anzeigen
Verwende return x * 2.
Lösung nach 3 Versuchen verfügbar
Wiederholungsübung
Definiere `min_max(nums)`, das ein Tupel `(minimum, maximum)` zurückgibt. Rufe es mit `[3, 1, 4, 1, 5, 9, 2, 6]` auf und entpacke das Ergebnis in `mn, mx`. Evaluiere `(mn, mx)`.
Hinweis anzeigen
return min(nums), max(nums)
Lösung nach 3 Versuchen verfügbar
Zusätzliche Herausforderung
Definiere eine Funktion `is_palindrome(text)` die `True` zurückgibt, wenn der Eingabe-String seinem umgedrehten Wert entspricht, andernfalls `False`. Teste die Funktion mit `is_palindrome("radar")` als letztem Ausdruck.
Hinweis anzeigen
Verwende Slicing text[::-1], um den String umzudrehen und mit dem Originaltext zu vergleichen.
Lösung nach 3 Versuchen verfügbar