edubun
Deutsch

Eigene Funktionen schreiben

Eine Funktion, die ohne return endet, gibt None zurück, weshalb print(print("hi")) erst hi und dann None zeigt.

Zwei Funktionen, die auf dem Bildschirm gleich aussehen

Die meisten Einsteigenden glauben, einen Wert anzuzeigen und ihn zurückzugeben sei dasselbe. Hier sind zwei Funktionen, die beide die Fläche eines Rechtecks zu „geben“ scheinen. def beginnt eine Funktionsdefinition: einen Namen, die Eingaben in Klammern, einen Doppelpunkt und einen eingerückten Rumpf. Führe das Programm aus, und beide Ausgabezeilen sehen gleich aus.

def show_area(w, h):
    print(w * h)

def area(w, h):
    return w * h

show_area(4, 3)
print(area(4, 3))
Ausgabe
12
12

Versuche nun, die Ergebnisse in einer Rechnung zu nutzen. Der Unterschied zeigt sich sofort.

def show_area(w, h):
    print(w * h)

def area(w, h):
    return w * h

a = show_area(4, 3)
b = area(4, 3)
print(a, b)
print(b * 2)
Ausgabe
12
None 12
24

show_area gibt 12 auf dem Bildschirm aus und endet dann. Sie gibt nichts zurück, und eine Funktion, die nichts zurückgibt, liefert den besonderen Wert None. Also ist a gleich None. area gibt nichts aus; sie liefert 12 an die Zeile zurück, die sie aufgerufen hat, und diese 12 kann gespeichert, ausgegeben oder verdoppelt werden. Ausgeben ist für Menschen, die auf den Bildschirm sehen. Zurückgeben ist für den Rest des Programms. Willst du ein Ergebnis später nutzen, gib es zurück.

Eine Funktion nimmt Argumente entgegen, führt ihren Rumpf damit aus und gibt mit return einen Wert zurück. area(4, 3) wird überall, wo es steht, zu 12.

Parameter sind die Namen, Argumente sind die Werte

In def area(w, h): sind w und h Parameter: Namen, die nur innerhalb der Funktion existieren. In area(4, 3) sind 4 und 3 Argumente: die Werte, die diese Namen für genau diesen Aufruf füllen. Sie werden nach Position zugeordnet, das erste Argument geht also an den ersten Parameter. Rufst du die Funktion mit der falschen Zahl von Argumenten auf, stoppt Python mit einem TypeError, der den fehlenden Parameter nennt.

Ein Parameter kann einen Standardwert haben, in der Definition mit = geschrieben. Aufrufende können dieses Argument weglassen, dann wird der Standardwert genutzt. Das Python-Tutorial zeigt Standardwerte im Abschnitt über das Definieren von Funktionen, und sie sind in den eingebauten Funktionen überall. print selbst hat einen: Sein Parameter end hat standardmäßig einen Zeilenumbruch.

def greet(name, greeting="Hello"):
    return f"{greeting}, {name}!"

print(greet("Mina"))
print(greet("Jun", "Hi"))
print("no new line", end=" ")
print("here")
Ausgabe
Hello, Mina!
Hi, Jun!
no new line here

return beendet die Funktion sofort

Eine Funktion hört beim ersten return auf, das sie erreicht, auch wenn darunter weitere Zeilen stehen. So sind frühe returns ein ordentlicher Weg, Sonderfälle zu behandeln. Die Funktion unten nutzt die Ticketregel aus der Einheit zu if, jetzt so verpackt, dass jeder Teil eines Programms nach einem Preis fragen kann.

def ticket_price(age):
    if age < 7:
        return 0
    if age <= 18:
        return 3000
    return 5000

family = [40, 15, 5]
total = 0
for age in family:
    total += ticket_price(age)
print(total)
Ausgabe
8000

In einer Funktion erzeugte Variablen sind lokal: Sie existieren, solange die Funktion läuft, und verschwinden, wenn sie endet. Eine Variable namens total in einer Funktion hat nichts mit einem total außerhalb zu tun. Dadurch kannst du eine Funktion wiederverwenden, ohne dir Gedanken zu machen, welche Namen der Rest des Programms gerade nutzt.

defBeginnt eine Funktionsdefinition
ParameterEin Name in der Definition: w in def area(w, h)
ArgumentEin bei einem Aufruf übergebener Wert: 4 in area(4, 3)
returnGibt einen Wert zurück und beendet die Funktion
NoneWas eine Funktion zurückgibt, wenn sie kein return hat
lokale VariableEine Variable, die nur innerhalb einer Funktion existiert
  1. Was gibt das aus?
    def double(x):
        return x * 2
    
    print(double(7))
  2. Was gibt das aus?
    def hello():
        print("hi")
    
    result = hello()
    print(result)
    • hi
      hi
    • hi
      None
    • None
    • hi
  3. Was gibt das aus?
    def add(a, b):
        return a + b
    
    print(add(2, 3) * add(1, 1))
  4. Was gibt das aus?
    def f(x):
        return x + 1
        print("never")
    
    print(f(1))
  5. Was gibt das aus?
    def greet(name, greeting="Hello"):
        return greeting + " " + name
    
    print(greet("Bo"))
  6. Was gibt das aus?
    def sign(n):
        if n > 0:
            return "plus"
        if n < 0:
            return "minus"
        return "zero"
    
    print(sign(-4), sign(0))
  7. Was gibt das aus?
    print("a", end="-")
    print("b")
  8. Was gibt das aus?
    def total_of(nums):
        t = 0
        for n in nums:
            t += n
        return t
    
    print(total_of([4, 5, 6]))
  9. Wie heißen w und h in def area(w, h):?
    • Argumente
    • Parameter
    • Rückgabewerte
    • Schlüsselwörter
  10. Bringe die Zeilen in die richtige Reihenfolge, damit das Programm 25 ausgibt.
    Ausgabe
    25
Häufige Fehler
  • „Eine Funktion, die die Antwort ausgibt, hat sie zurückgegeben.“ Ausgeben zeigt den Wert nur an. Die Funktion gibt weiter None zurück, also setzt x = show_area(4, 3) den Wert von x auf None, und x * 2 bricht mit TypeError: unsupported operand type(s) for *: 'NoneType' and 'int' ab.
  • „Ich kann eine Funktion oberhalb der Zeile aufrufen, in der ich sie definiere.“ Python läuft von oben, an dieser Stelle existiert der Name also noch nicht: NameError: name 'area' is not defined. Setze das def über den ersten Aufruf.
  • „Lasse ich ein Argument weg, wird es einfach null.“ Ohne Standardwert stoppt Python: area(4) ergibt TypeError: area() missing 1 required positional argument: 'h'.
Hinweis für LehrkräfteDie Verwechslung von print und return ist das häufigste Missverständnis in dieser Phase, und sie versteckt sich, weil der Bildschirm gleich aussieht. Lass Lernende das Ergebnis in einer Variablen speichern und in einer zweiten Rechnung nutzen; das None zeigt sich sofort. Sprache hilft: Sage, eine Funktion „gibt einen Wert zurück“, und halte „zeigt“ für print frei. Der koreanische Informatiklehrplan der Mittelstufe verbindet den Gebrauch von Funktionen mit dem Finden und Beheben von Fehlern, die Fehler durch ein fehlendes Argument und durch einen Aufruf vor dem def sind also gutes Material für eine kurze Fehlersuche.
Das Wichtigste
  • def name(params): beginnt eine Funktion; der Rumpf ist eingerückt.
  • return gibt einen Wert zurück und beendet die Funktion.
  • print zeigt einen Wert an; es gibt ihn nicht zurück. Ohne return ergibt sich None.
  • Argumente füllen Parameter nach Position; Standardwerte füllen fehlende.
  • Innerhalb einer Funktion erzeugte Variablen sind lokal für sie.
Quellen zu diesem Kurs (6)
  • Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
  • Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
  • Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
  • General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
  • Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
  • Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)

Abgerufen: 2026-10-19