Funktionen#

Die grundlegende Syntax für eine Python-Funktionsdefinition lautet

def function_name(param1, param2, ...):
    body

Wie bei Kontrollströmen verwendet Python Einrückungen, um die Funktion von der Funktionsdefinition abzugrenzen. Das folgende einfache Beispiel fügt den Code in eine Funktion ein, so dass ihr diese aufrufen könnt, um die Fakultät einer Zahl zu erhalten:

1 >>> def fact(n):
2 ...     """Return the factorial of the given number."""
3 ...     f = 1
4 ...     while n > 0:
5 ...         f = f * n
6 ...         n = n - 1
7 ...     return f
Zeile 2

Dies ist ein optionaler Dokumentationsstring, oder docstring. Ihr könnt seinen Wert erhalten, indem ihr fact.__doc__ aufruft. Der Zweck von Docstrings ist es, das Verhalten einer Funktion und die Parameter, die sie annimmt, zu beschreiben, während Kommentare interne Informationen über die Funktionsweise des Codes dokumentieren sollen. Docstrings sind Zeichenketten, die unmittelbar auf die erste Zeile einer Funktionsdefinition folgen und normalerweise in dreifachen Anführungszeichen stehen, um mehrzeilige Beschreibungen zu ermöglichen. Bei mehrzeiligen Dokumentationsstrings ist es üblich, in der ersten Zeile eine Zusammenfassung der Funktion zu geben, dieser Zusammenfassung eine leere Zeile folgen zu lassen und mit dem Rest der Informationen zu enden.

Siehe auch

Zeile 7

Der Wert wird nach dem Aufruf der Funktion zurückgegeben. Ihr könnt auch Funktionen schreiben, die keine Rückgabeanweisung haben und None zurückgeben, und wenn return arg ausgeführt wird, wird der Wert arg zurückgegeben.

Obwohl alle Python-Funktionen Werte zurückgeben, liegt es an euch, wie der Rückgabewert einer Funktion verwendet wird:

1 >>> fact(3)
2 6
3 >>> x = fact(3)
4 >>> x
5 6
Zeile 1

Der Rückgabewert ist nicht mit einer Variablen verknüpft.

Zeile 2

Der Wert der fact-Funktion wird nur im Interpreter ausgegeben.

Zeile 3

Der Rückgabewert ist mit der Variablen x verknüpft.

Parameter#

Python bietet flexible Mechanismen zur Übergabe von Argumenten an Funktionen:

 1>>> x, y = 2, 3
 2>>> def func1(u, v, w):
 3...     value = u + 2*v + w**2
 4...     if value > 0:
 5...         return u + 2*v + w**2
 6...     else:
 7...         return 0
 8...
 9>>> func1(x, y, 2)
1012
11>>> func1(x, w=y, v=2)
1215
13>>> def func2(u, v=1, w=1):
14...     return u + 4 * v + w ** 2
15...
16>>> func2(5, w=6)
1745
18>>> def func3(u, v=1, w=1, *tup):
19...     print((u, v, w) + tup)
20...
21>>> func3(7)
22(7, 1, 1)
23>>> func3(1, 2, 3, 4, 5)
24(1, 2, 3, 4, 5)
25>>> def func4(u, v=1, w=1, **kwargs):
26...     print(u, v, w, kwargs)
27...
28>>> func4(1, 2, s=4, t=5, w=3)
291 2 3 {'s': 4, 't': 5}
Zeile 2

Funktionen werden mit Hilfe der def-Anweisung definiert.

Zeile 5

Die return-Anweisung wird von einer Funktion verwendet, um einen Wert urückzugeben. Dieser Wert kann von beliebigem Typ sein. Wird keine return-Anweisung gefunden, wird der Wert None von Python zurückgegeben.

Zeile 11

Funktionsargumente können entweder nach Position oder nach Name (Schlüsselwort) eingegeben werden. z und y werden in unserem Beispiel mit dem Namen angegeben.

Zeile 13

Funktionsparameter können mit Standardwerten definiert werden, die verwendet werden, wenn ein Funktionsaufruf sie auslässt.

Zeile 18

Es kann ein spezieller Parameter definiert werden, der alle zusätzlichen Positionsargumente in einem Funktionsaufruf in einem Tupel zusammenfasst.

Zeile 25

Ebenso kann ein spezieller Parameter definiert werden, der alle zusätzlichen Schlüsselwortargumente in einem Funktionsaufruf in einem Dictionary zusammenfasst.