Python- Funktionen
Eine Funktion ist ein Codeblock, der nur ausgeführt wird, wenn er aufgerufen wird.
Sie können Daten, sogenannte Parameter, an eine Funktion übergeben.
Eine Funktion kann als Ergebnis Daten zurückgeben.
Erstellen einer Funktion
In Python wird eine Funktion mit dem Schlüsselwort def definiert:
Beispiel
def my_function():
print("Hello from a function")
Aufruf einer Funktion
Um eine Funktion aufzurufen, verwenden Sie den Funktionsnamen gefolgt von Klammern:
Beispiel
def my_function():
print("Hello from a function")
my_function()
Argumente
Informationen können als Argumente an Funktionen übergeben werden.
Argumente werden nach dem Funktionsnamen innerhalb der Klammern angegeben. Sie können beliebig viele Argumente hinzufügen, trennen Sie sie einfach durch ein Komma.
Das folgende Beispiel hat eine Funktion mit einem Argument (fname). Wenn die Funktion aufgerufen wird, übergeben wir einen Vornamen, der innerhalb der Funktion verwendet wird, um den vollständigen Namen auszugeben:
Beispiel
def my_function(fname):
print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
Argumente werden in Python-Dokumentationen oft zu args abgekürzt.
Parameter oder Argumente?
Die Begriffe Parameter und Argument können für dasselbe verwendet werden: Informationen, die an eine Funktion übergeben werden.
Aus Sicht einer Funktion:
Ein Parameter ist die Variable, die in der Funktionsdefinition in Klammern aufgeführt ist.
Ein Argument ist der Wert, der an die Funktion gesendet wird, wenn sie aufgerufen wird.
Anzahl der Argumente
Standardmäßig muss eine Funktion mit der richtigen Anzahl von Argumenten aufgerufen werden. Das heißt, wenn Ihre Funktion 2 Argumente erwartet, müssen Sie die Funktion mit 2 Argumenten aufrufen, nicht mehr und nicht weniger.
Beispiel
Diese Funktion erwartet 2 Argumente und erhält 2 Argumente:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil", "Refsnes")
Beispiel
Diese Funktion erwartet 2 Argumente, bekommt aber nur 1:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil")
Willkürliche Argumente, *args
Wenn Sie nicht wissen, wie viele Argumente an Ihre Funktion übergeben werden, fügen Sie ein *
vor dem Parameternamen in der Funktionsdefinition hinzu.
Auf diese Weise erhält die Funktion ein Tupel von Argumenten und kann entsprechend auf die Elemente zugreifen:
Beispiel
Wenn die Anzahl der Argumente unbekannt ist, fügen Sie ein *
vor dem Parameternamen hinzu:
def my_function(*kids):
print("The youngest child
is " + kids[2])
my_function("Emil", "Tobias", "Linus")
Willkürliche Argumente werden in Python-Dokumentationen oft zu *args abgekürzt.
Schlüsselwortargumente
Sie können Argumente auch mit der Schlüssel = Wert -Syntax senden.
Auf diese Weise spielt die Reihenfolge der Argumente keine Rolle.
Beispiel
def my_function(child3, child2, child1):
print("The youngest child
is " + child3)
my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
Der Ausdruck Schlüsselwortargumente wird in Python-Dokumentationen oft zu kwargs abgekürzt .
Willkürliche Schlüsselwortargumente, **kwargs
Wenn Sie nicht wissen, wie viele Schlüsselwortargumente an Ihre Funktion übergeben werden, fügen Sie zwei Sternchen: **
vor dem Parameternamen in der Funktionsdefinition hinzu.
Auf diese Weise erhält die Funktion ein Wörterbuch mit Argumenten und kann entsprechend auf die Elemente zugreifen:
Beispiel
Wenn die Anzahl der Schlüsselwortargumente unbekannt ist, fügen Sie
**
vor dem Parameternamen ein Doppel hinzu:
def my_function(**kid):
print("His last name is " + kid["lname"])
my_function(fname = "Tobias", lname = "Refsnes")
Willkürliche Kword-Argumente werden in Python-Dokumentationen oft zu **kwargs abgekürzt .
Standardparameterwert
Das folgende Beispiel zeigt, wie ein Standardparameterwert verwendet wird.
Wenn wir die Funktion ohne Argument aufrufen, verwendet sie den Standardwert:
Beispiel
def my_function(country = "Norway"):
print("I am from " +
country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
Übergeben einer Liste als Argument
Sie können beliebige Datentypen von Argumenten an eine Funktion senden (Zeichenfolge, Zahl, Liste, Wörterbuch usw.), und sie werden innerhalb der Funktion als derselbe Datentyp behandelt.
Wenn Sie beispielsweise eine Liste als Argument senden, ist es immer noch eine Liste, wenn sie die Funktion erreicht:
Beispiel
def my_function(food):
for x in food:
print(x)
fruits = ["apple", "banana", "cherry"]
my_function(fruits)
Rückgabewerte
Um eine Funktion einen Wert zurückgeben zu lassen, verwenden Sie die return
Anweisung:
Beispiel
def my_function(x):
return 5 * x
print(my_function(3))
print(my_function(5))
print(my_function(9))
Die Pass-Anweisung
function
Definitionen dürfen nicht leer sein, aber wenn Sie aus irgendeinem Grund eine function
Definition ohne Inhalt haben, geben Sie die pass
Anweisung ein, um eine Fehlermeldung zu vermeiden.
Beispiel
def myfunction():
pass
Rekursion
Python akzeptiert auch Funktionsrekursion, was bedeutet, dass eine definierte Funktion sich selbst aufrufen kann.
Rekursion ist ein allgemeines mathematisches und Programmierkonzept. Es bedeutet, dass eine Funktion sich selbst aufruft. Dies hat den Vorteil, dass Sie Daten durchlaufen können, um zu einem Ergebnis zu gelangen.
Der Entwickler sollte mit der Rekursion sehr vorsichtig sein, da es ziemlich einfach sein kann, eine Funktion zu schreiben, die niemals beendet wird, oder eine Funktion, die übermäßig viel Speicher oder Prozessorleistung verbraucht. Korrekt geschrieben kann Rekursion jedoch ein sehr effizienter und mathematisch eleganter Programmieransatz sein.
In diesem Beispiel ist tri_recursion() eine Funktion, die wir so definiert haben, dass sie sich selbst aufruft ("recurse"). Wir verwenden die Variable k als Daten, die bei jeder Rekursion um ( -1 ) dekrementiert werden. Die Rekursion endet, wenn die Bedingung nicht größer als 0 ist (dh wenn sie 0 ist).
Für einen neuen Entwickler kann es einige Zeit dauern, bis er herausfindet, wie genau dies funktioniert. Der beste Weg, dies herauszufinden, besteht darin, ihn zu testen und zu modifizieren.
Beispiel
Rekursionsbeispiel
def tri_recursion(k):
if(k > 0):
result = k + tri_recursion(k - 1)
print(result)
else:
result = 0
return result
print("\n\nRecursion Example Results")
tri_recursion(6)