Prozeduren und Funktionen
► Python-Dokumentation: Function definitions
Prozeduren sind Programmteile, die nicht unmittelbar ausgeführt werden, sondern erst dann, wenn sie durch ihren Namen aufgerufen werden.
Mit ihrer Hilfe können wiederkehrende Aufgaben implementiert werden. Da sie nur ein einziges Mal notiert werden müssen, kann ein Skript auf diese Weise kürzer und übersichtlicher gehalten werden. Korrekturen an der Prozedur wirken sich so auch auf jede Stelle aus, an der diese aufgerufen wird.
Eine Prozedur wird mit der Anweisung def gefolgt von dem Prozedurnamen definiert. Für den Namen der Prozedur gelten die gleichen Regeln wie für den Namen einer Variable.
1 2 |
|
► Python-Dokumentation: pass
In diesem Beispiel wird die Prozedur meineProzedur() definiert. Die Anweisung pass dient lediglich als Platzhalter für den bislang fehlenden Inhalt. Sie hat die Bedeutung ›Tue nichts spezielles, sondern gehe zum nächsten Programmschritt‹.
Eine Prozedur muss immer vor ihrem Aufruf definiert sein.
Im folgenden Beispiel wird die Prozedur konkretisiert und in einer Zählschleife aufgerufen:
1 2 3 4 5 |
|
An Prozeduren können auch Attribute übergeben werden, die innerhalb der Prozedur verarbeitet werden. Anzahl, Position und Datentyp der übergebenen Attribute müssen in der Grundform sowohl in der Definition der Prozedur als auch in ihrem Aufruf übereinstimmen.
1 2 3 4 5 6 7 |
|
Die in einer Prozedur oder Funktion verarbeiteten Attribute können auch einen Vorgabewert besitzen. Ein solcher Wert kann im Aufruf der Prozedur bzw. Funktion dann weggelassen werden:
1 2 3 4 5 |
|
Die innerhalb einer Prozedur bzw. einer Funktion verwendeten Namen für Variablen gelten nur innerhalb dieser Prozedur oder Funktion, wie der NameError durch Zeile 6 demonstriert:
1 2 3 4 5 6 |
|
Allerdings können Prozeduren oder Funktionen Variablen aufrufen, die zwar nicht innerhalb, aber außerhalb der Prozedur bzw. Funktion bereits definiert wurden. Verändern lassen sich diese Werte nicht:
1 2 3 4 5 6 |
|
Weiterhin ist zu beachten, dass die Elemente bestimmter Datentypen wie Listen und Dictionarys innerhalb einer Prozedur bzw. einer Funktion verändert werden können, auch wenn sie nicht an die Prozedur bzw. Funktion übergeben wurden und auch nicht an einen Rückgabewert gebunden sind, wie folgendes Beispiel veranschaulichen soll:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
Funktionen
► Python-Dokumentation: Function definitions
Funktionen können als Sonderform der Prozeduren betrachtet werden, da eine Funktion mindestens einen Rückgabewert besitzt, der üblicherweise das Ergebnis der Verarbeitung der übergebenen Attribute enthält. Dieser Wert wird mit der Anweisung return zurückgegeben und kann so im weiteren Verlauf verarbeitet werden.
1 2 3 4 5 6 7 8 9 |
|
Wie eine Funktion mit mehreren Rückgabewerten aufgerufen wird, soll folgendes Beispiel veranschaulichen:
1 2 3 4 5 6 7 8 |
|
Mit Prozeduren und Funktionen lassen sich Skripte auch übersichtlich gestalten, so dass zusammenhängende Prozesse dicht beieinander liegen und durch den Namen klar erkennbar sind. So lässt sich beispielsweise der Ablauf eines Programms bereits zu Beginn seiner Entwicklung festlegen, auch wenn die konkreten Inhalte noch nicht implementiert worden sind:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Rekursive Funktionen
Rekursive Funktionen sind Funktionen, die sich selbst aufrufen. Ebenso wie bei Schleifen muss hier sichergestellt werden, dass es eine Abbruchbedingung gibt, die das Verlassen der Funktion auslöst, da die Rekursion nicht beliebig oft durchgeführt werden kann.
1 2 3 4 5 6 |
|
Wie oft rekursiert werden kann, lässt sich folgendermaßen bestimmen. Der letzte ausgegebene Wert entspricht der maximalen Tiefe der Rekursion:
1 2 3 4 5 6 7 8 |
|