Funktion, Argument, Rückgabewert

Funktionsaufruf

Um ein Rechteck zu zeichnen, verwenden wir die Funktion rectangle der Bibliothek PyTamaro. Dies machen wir mit Funktionsaufrufen und Argumenten, die einen Rückgabewert erzeugen.

Loading...
Lösung
from pytamaro import rectangle, green, show_graphic

show_graphic(rectangle(200, 50, green))

Dieser Funktionsaufruf besteht immer zuerst aus dem Namen der Funktion, gefolgt von einem Klammernpaar mit den Argumenten:

rectangle

Funktionsname

Am Funktionsnamen erkennt der Mensch ungefähr, was die Funktin tut. Der Compiler weiss durch den Funktionsnamen, was er tun soll. Funktionsnamen müssen eindeutig sein, sonst kommt es zu Verwirrung und Fehlermeldungen.

Argumente

Argumente stehen in den Klammern des Funktionsaufrufs und sind durch Kommas getrennt. Die Reihenfolge, die Anzahl und der Datentyp der Argumente sind meist eindeutig und müssen korrekt verwendet werden. In der Dokumentation steht, welche Argumente man verwenden soll: rectangle.

Rückgabewert

Die Ausgabe ist der Rückgabewert, in diesem Fall ein grünes Rechteck des Datentyps Graphic. Jede Funktion hat entweder keinen oder genau einen Rückgabewert.

Sie können die Funktionsdefinition (Vorgaben) in der Dokumentation nachschauen, z. B. indem Sie auf rectangle klicken.

Lösungen

  • triangle: 4 Argumente (nämlich seite1, seite2, winkel und farbe), Rückgabewert ein Dreieck des Typs Graphic.
  • beside: 2 Argumente (linke_grafik und rechte_grafik), Rückgabewert auch eine Graphic.
  • ellipse: 3 Argumente (breite, höhe und farbe), Rückgabewert auch eine Graphic.

Anzahl Argumente

Abhängig von der Definition einer Funktion können 0 bis unendlich viele Argumente übergeben werden. print ist zum Beispiel flexibel, beside jedoch benötigt genau zwei Argumente.

print()
print("null")
print(0, "eins")
print("null", 1, "zwei")
print(0, "eins", "zwei", 3)
print("null", 1, 2, "drei", 4)
print("null", 1 + 2, "drei", 4, "fünf")
print("null", 1 + 2, "drei", "vier, fünf + 6")

etc.

Anzahl Argumente für jeden Aufruf

  • 0: print()
  • 1: print("null")
  • 2: print(0, "eins")
  • 3: print("null", 1, "zwei")
  • 4: print(0, "eins", "zwei", 3)
  • 5: print("null", 1, 2, "drei", 4)
  • 5: print("null", 1 + 2, "drei", 4, "fünf")
  • 4: print("null", 1 + 2, "drei", "vier, fünf + 6")

Argumente werden kommagetrennt in den Klammernpaaren aufgerufen. Spezialfälle:

  1. 1 + 2 ist also ein Argument und nicht zwei, da die zwei Zahlen addiert werden, bevor sie als Argument der print-Funktion übergeben werden.
  2. "vier, fünf + 6" ist auch ein Argument, obwohl es ein Komma beinhaltet. Der Grund sind die Gänsefüsschen. Alles, was von Gänsefüsschen umgeben ist, ist ein String, egal ob dies ein Komma, eine Klammer oder ein Funktionsaufruf wie "print()" ist.

Verschachtelung

Wir können in Funktionen andere Funktionen aufrufen. Dann werden, wie bei der Rechnung 3 + (4 * 5), zuerst die Werte in den Klammern ausgewertet. Das Programm arbeitet sich also von innen nach aussen:

0. Hier ist der ellipse-Aufruf im show_graphic-Aufruf.1. Zuerst wird die innere Funktion ellipse ausgewertet und eine Ellipsengrafik an die äussere Funktion zurückgegeben.2. Zuletzt gibt die äussere Funktion show_graphic die Ellipsengrafik in der Konsole als Seiteneffekt aus.
show_graphicverschachtelungimage.png
show_graphic(
    beside(
        triangle(60, 30, 90, red),
        triangle(60, 30, 90, blue)
    )
)

Lösungsvorschlag:

0. Code1. zwei innerste Funktionen2. zweitinnerste Funktionen3. äusserste Funktion, Seiteneffekt an die Konsole
b0b1b2image.png

Optionale Argumente

show_graphic

Die Funktion show_graphic unterscheidet sich in zwei wichtigen Punkten von Grafikfunktionen wie beside und rectangle:

  1. Sie hat keinen Rückgabewert sondern einen Seiteneffekt (eine Ausgabe auf der Konsole).
  2. Sie hat ein optionales Argument: debug.

Seiteneffekt

Ein Seiteneffekt ist etwas, das an die Konsole ausgegeben wird und somit für Menschen sichtbar wird. Jedoch kann ein Programm einen Seiteneffekt an die Konsole nicht weiterverwenden (Eine Funktion, die nur einen Seiteneffekt hat, hat immer den Datentyp NoneType.)

Im folgenden Beispiel wird aus ellipse(200, 50, blue) eine Grafik als Rückgabewert erstellt und kann als solche an die äussere Funktion show_graphic weitergegeben werden. show_graphic jedoch gibt nichts zurück; stattdessen gibt es die Grafik an die Konsole aus (weg).

seiteneffekt

Eine Grafik in show_graphic kann also nicht in einer anderen Funktion verwendet werden, denn es gibt keine Grafik zurück. Folgender Code wird also immer einen Fehler ausgeben:

from pytamaro import show_graphic, rectangle, beside, blue, green

beside(
    show_graphic(
        rectangle(100, 10, blue)
    ),
    rectangle(200, 20, green)
)
Loading...
Lösungscode
from pytamaro import show_graphic, rectangle, beside, blue, green

show_graphic(
    beside(
        rectangle(100, 10, blue),
    rectangle(200, 20, green)
    )
)

debug

Loading...
Loading...
LösungWenn debug aktiviert, also auf True gesetzt wird, wird auf der angezeigten Grafik einerseits der Mittelpunkt angezeigt und andererseits der zeigt ein Rahmen die Aussenkanten der Grafik an.
Loading...
Lösungscode
from pytamaro import triangle, blue

show_graphic(triangle(60, 300, 120, blue), True)
LösungserklärungDer Mittelpunkt eines Dreiecks ist sein Schwerpunkt. Der Grafikrahmen zeigt immer die Grafikränder an, die eine gerahmte Grafik braucht, wie wenn Sie das Bild in einer Gallerie in einem Bilderrahmen aufhängen wollten.

print

Die Funktion print gibt wie show_graphic ihre Argumente als Seiteneffekt aus, bei uns auf der Konsole:

Loading...

print() ohne Argumente gibt einfach eine leere Zeile aus, es wird in der Konsole also auf eine neue Zeile gewechselt (\newline oder \n).

print ist, im Gegensatz zu show_graphic, eine built-in Funktion von Python, sie muss also nicht importiert werden. print hat mehrere optionale Argumente, wir schauen davon end und sep an.

end=

Nach jedem print-Aufruf wird standardmässig auf eine neue Zeile gewechselt, normalerweise endet also ein print-Aufruf auf \n. Falls Sie das nicht wünschen, können Sie als letztes Argument end=" " schreiben:

Loading...

Als end-Wert kann man irgendeinen String setzen: end=", ", end="abc "...

sep=

Ein anderes wichtiges optionales print-Argument ist sep.

Loading...
Lösungserklärungsep legt das Trennzeichen zwischen den einzelnen, auszugebenden Werten in print fest. Standardmässig ist es das Leerzeichen (Leerschlag, space), jedoch kann es wieder auf jeden String festgelegt werden.

Wichtig bei der Verwendung von optionalen Argumenten in Python ist, dass immer erst am Schluss aufgelistet werden, nie vor den obligatorischen Argumenten.

Lesen Sie auch die offizielle Dokumentation von print oder klicken Sie auf print als Tippkarte in der obersten Zeile einer Codezelle, um noch mehr darüber zu erfahren.

  1. Geben Sie "1*2*3*3*4*67*6" aus, verwenden Sie das Multiplikationszeichen aber nur einmal.
  2. Geben Sie "1-2-3-3-4-67-6" aus, verwenden Sie - aber nur einmal.
  3. Geben Sie eine einzeilige Nachricht aus, verfassen Sie sie aber als Dreizeiler.
  4. Geben Sie "1223 / 2 = ... ist ungleich 1223 // 2 = ..." aus, verwenden Sie end und sep und lassen Sie den Computer das Resultat (...) berechnen, rechnen nicht Sie selbst!
Loading...
Lösung 1
print(1,2,3,3,4,67,6, sep="*")
Lösung 2
print(1,2,3,3,4,67,6, sep="-")
Lösung 3
print("Hallo Emi", end=", ")
print("hast du Egon gesehen", end="? ")
print("LG J")
Lösung 4
print("1223 / 2", 1223 / 2, sep=" = ", end=" ist ungleich ")
print("1223 // 2", 1223 // 2, sep=" = ")

Was Sie gelernt und geübt haben

Programmierkonzepte

  • Sie können Funktionen und Argumente erkennen, in eigenen Worten beschreiben und verwenden.
  • Sie können Programme erstellen, verstehen und verändern.

Python

  • Sie können built-in-Funktionen wie print mit verschiedenen Argumenten benutzen.
  • Sie können die verschiedenen Argumentarten der Funktion print in eigenen Worten erklären und verwenden und diese Kenntnisse auf andere Funktionen anwenden.

PyTamaro

  • Sie können PyTamaro-Funktionen wie show_graphic und beside mit verschiedenartigen Argumenten benutzen und in eigenen Worten erklären.

This activity has been created by Gall and is licensed under CC BY-SA 4.0.

Funktion, Argument, Rückgabewert

Logo of PyTamaro

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy PolicyPlatform Version 51a7c2e (Tue, 22 Apr 2025 08:35:06 GMT)