Funktionen#
Wir haben Funktionen in früheren Lektionen verwendet. Funktionen haben einen Namen und Parameter. Einige geben ein Ergebnis zurück, andere nicht. Typischerweise rufen wir sie mit result = name(parameters)
auf.
Siehe auch
Schauen wir uns einige Funktionen an, zum Beispiel print(text)
und pow(x, y)
. Die print-Funktion nimmt einen Parameter (oder mehrere Parameter) und gibt nichts zurück:
result = print('Hello world')
Hello world
result
Die pow-Funktion hat zwei Parameter und gibt ein Ergebnis zurück:
result = pow(2, 3)
result
8
Benutzerdefinierte Funktionen#
Sie können Ihre eigenen Funktionen mit der def
-Anweisung DEFinieren. Nach der def-Anweisung sollten Sie den Namen Ihrer Funktion und in Klammern ihre Parameter angeben. Danach folgt ein Doppelpunkt :
und alle folgenden eingerückten Codezeilen gehören zu dieser Funktion. Eine abschließende return
-Anweisung sendet das Ergebnis dorthin zurück, von wo die Funktion aufgerufen wurde.
def sum_numbers(a, b):
result = a + b
return result
Sie können dann Ihre Funktion so oft aufrufen, wie Sie möchten
sum_numbers(3, 4)
7
sum_numbers(5, 6)
11
Manchmal möchten Sie das Ergebnis Ihrer Funktion in einer Variable speichern.
c = sum_numbers(4, 5)
print(c)
9
Code mit Funktionen vereinfachen#
Angenommen, Sie haben einen komplizierten Algorithmus, der Ihnen sagen kann, ob eine Zahl ungerade oder gerade ist. Lassen Sie uns diesen Algorithmus in eine Funktion packen und später aufrufen. Für unseren Algorithmus verwenden wir den Modulo-Operator %.
def print_odd_or_even(number):
if number % 2 == 0:
print(number, "is even")
else:
print(number, "is odd")
print_odd_or_even(3)
3 is odd
print_odd_or_even(4)
4 is even
print_odd_or_even(10)
10 is even
Anstatt also immer wieder denselben if-else
-Block zu schreiben, können wir einfach unsere benutzerdefinierte print_odd_or_even
-Funktion aufrufen.
Funktionen dokumentieren#
Sie können dokumentieren, was eine Funktion tut, in ihrem sogenannten Docstring. Der Docstring folgt direkt nach dem Funktionskopf und sieht so aus:
def square(number):
'''
Quadriert eine Zahl, indem sie mit sich selbst multipliziert wird, und gibt das Ergebnis zurück.
'''
return number * number
Sie können dann später die Dokumentation der Funktion wie folgt lesen:
print(square.__doc__)
Squares a number by multiplying it with itself and returns its result.
Probieren Sie auch dies aus, wenn Sie den Docstring nebeneinander in Ihrem Notebook angezeigt haben möchten:
square?
Signature: square(number)
Docstring: Squares a number by multiplying it with itself and returns its result.
File: /var/folders/p1/6svzckgd1y5906pfgm71fvmr0000gn/T/ipykernel_11914/1507435947.py
Type: function
Übrigens können Sie dies mit jeder Funktion machen:
import math
print(math.sqrt.__doc__)
Return the square root of x.
print(math.exp.__doc__)
Return e raised to the power of x.
Übung#
Schreiben Sie eine Funktion, die zwei Parameter annimmt: number_of_points_in_exam
und number_of_total_points_in_exam
und eine Note von 1 bis 5 zurückgibt. Studenten mit > 95% der Punkte bekommen Note 1, über 80% bekommen sie Note 2, über 60% Note 3 und über 50% Note 4. Studenten mit weniger als 50% bekommen Note 5 und müssen die Prüfung wiederholen. Rufen Sie dann die Funktion für drei Studenten auf, die 15, 25 und 29 Punkte in einer Prüfung mit insgesamt 30 Punkten hatten.