Das Schlüsselwort zum Definieren von Funktionen in Python lautet def. Um beispielsweise eine Funktion namens my_function zu definieren, können wir sie wie folgt definieren, wobei x und y in Klammern die übergebenen Parameter sind.
def my_function(): # function body
Rückgabewert
Die Funktion kann mithilfe des Schlüsselworts return Daten zurückgeben. Wenn die Funktion bis zur Rückkehr ausgeführt wird, kehrt sie zurück und führt die Funktion nicht mehr aus. Funktionen ohne Return-Anweisungen geben standardmäßig None zurück.
return None kann als return abgekürzt werden.
Leere Funktion
Wenn Sie eine Funktion definieren möchten, die nichts tut, können Sie die pass-Anweisung verwenden.
Zum Beispiel fungiert
def do_nothing() pass
pass als Platzhalter. Wenn der spezifische Inhalt dieser Funktion nicht definiert werden muss, können Sie pass verwenden.
Parameterprüfung
Im vorherigen Artikel wurde vorgestellt, dass die integrierte Funktion die Anzahl und den Datentyp der übergebenen Parameter überprüft. Wie geht Python mit benutzerdefinierten Funktionen um?
Wir definieren eine Funktion
def my_function(x,y): return x*y
Aufruf: my_function(1,2,3)
Fehler:
Traceback (most recent call last): File "/Users/W/Code/Python/LearnPython/DataType.py", line 4, in <module> my_function(1,2,3) TypeError: my_function() takes exactly 2 arguments (3 given)
Aufruf: my_function(1," abc")
Fehlermeldung: Es wird keine Fehlermeldung zurückgegeben. Tatsächlich hoffen wir, dass die beiden von my_function übergebenen Parameter Ganzzahlen und Gleitkommazahlen sein sollten.
Parameterprüfung zur Funktion hinzufügen
Wir nehmen einige Änderungen an my_function vor.
def my_function(x, y): if not (isinstance((x,y),(int,float)) and isinstance(y,(int,float))): raise TypeError('Bad operand type') return x*y
Zu diesem Zeitpunkt wird beim Aufruf der Funktion my_function und der Übergabe falscher Parameter ein TypeError ausgelöst.
Funktion gibt mehrere Werte zurück
Python unterstützt die Rückgabe mehrerer Werte. Python implementiert dies tatsächlich, indem es ein Tupel zurückgibt. Wir können es durch eine einfache Demo überprüfen:
def func(): return 2, 3 print func()
gibt ein Tupel wie (2,3) aus.
Syntaktisch können Klammern bei der Rückgabe eines Tupels weggelassen werden, d. h. mehrere Variablen können gleichzeitig ein Tupel empfangen und entsprechend der Position den entsprechenden Wert zuweisen. Zum Beispiel
x,y = func().