Title: Python Question

Eine der zentralen Ideen der Programmierung ist das **Lösen von Problemen**.
In der Informatik sind viele dieser Probleme besonders **komplex**.

Um auch umfangreichen Code gemeinsam im Team entwickeln zu können, braucht man geeignete **Strategien**.

Eine wichtige Möglichkeit dafür sind **Funktionen**.

Funktionen reduzieren die Komplexität: So musst du zum Beispiel nicht im Detail verstehen,
wie die `print`-Funktion eine Ausgabe auf der Konsole erzeugt oder welcher Algorithmus
hinter dem Befehl `turtle.circle(100)` steckt, um einen Kreis zu zeichnen.

Indem du Funktionen einfach aufrufst,
wird die zugrunde liegende Komplexität
für dich reduziert und der Code insgesamt besser lesbar. Außerdem ermöglicht dir eine Funktion, den Code **wiederzuverwenden**.

In diesem Kapitel lernst du, wie du Funktionen **aufrufst** und wie du selbst
Funktionen **definierst**, die dann verwendet werden können.

## Aufgbau einer Funktion

Eine Funktion besteht aus einem Namen gefolgt von mehreren Parametern in Klammern.

Hinweis: Man nennt die Variablen mit denen die Funktion aufgerufen wird **Parameter* - Die
konkreten Werte die übergeben werden nennt man **Argumente**.

### Beispiel: Die print-Funktion

Die Funktion print() nimmt auch mehrere mit einem Komma getrennte Werte an.
Sie gibt die einzelnen Ausgaben dann nacheinander, mit einer Leertaste getrennt, aus.

print("abc", "cde")

Im Code-Beispiel wird `print` mit den **Argumenten**

python

python

## Rückgabewerte

Manche Funktionen haben darüber hinaus einen Rückgabewert. Diesen kann man
entweder mit print() ausgeben oder in einer Variable speichern.

### Beispiel: Die maximum-Funktion

Schau dir folgenden Code an:

python

python

Die Funktion `max()` nimmt mehrere Argumente an und berechnet
das Maximum dieser Argumente.
Das Maximum wird anschließend zurückgegeben und in diesem Fall der Variable
`maximum` zugewiesen.

Die Variable `maximum` hat nach der Zeile den Wert 100.

## Funktionen ineinander verschachteln

Man kann Funktionen mit Rückgabewerten auch beliebig miteinander verketten:

Die Anweisung

gibt z..B. das vorher berechnete maximum aus.

!!! info Verschachtelte Funktionen
Wenn mehrere Funktionen ineinander geschachtelt sind,
dann werden diese von **innen nach außen** ausgewertet.

Der Rückgabewert der inneren Funktion dient als Argument
für die äußere Funktion.