{"id":8325,"date":"2023-11-01T10:00:00","date_gmt":"2023-11-01T09:00:00","guid":{"rendered":"https:\/\/databasecamp.de\/?p=8325"},"modified":"2024-09-12T17:01:20","modified_gmt":"2024-09-12T15:01:20","slug":"funktionen","status":"publish","type":"post","link":"https:\/\/databasecamp.de\/python\/funktionen","title":{"rendered":"Funktionen in Python &#8211; einfach erkl\u00e4rt!"},"content":{"rendered":"\n<img decoding=\"async\" width=\"1\" height=\"1\" alt=\"\" consent-original-src-_=\"https:\/\/vg07.met.vgwort.de\/na\/a13da27ccf7c41b9a3f0f429629407e5\" consent-required=\"9756\" consent-by=\"services\" consent-id=\"9758\">\n\n\n\n<p>Funktionen sind ein wichtiger Bestandteil von Python und werden genutzt, um Codebl\u00f6cke zu definieren, die zu einem sp\u00e4teren Zeitpunkt im Programm unter Nutzung des Namens wiederverwendet werden k\u00f6nnen. Jede Funktion besteht aus den folgenden Komponenten:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>def<\/code> \u2013 Schl\u00fcsselwort<\/strong>: Mit diesem Stichwort beginnt jede Funktionsdefinition gefolgt von einem eindeutigen Namen f\u00fcr die Funktion. Die Benamungsregeln f\u00fcr Funktionen sind identisch mit denen f\u00fcr Variablen, sodass der Funktionsname nicht mit einer Zahl beginnen kann und keine Sonderzeichen enthalten darf.\u00a0<\/li>\n\n\n\n<li><strong>Parameter &amp; Argumente<\/strong>: Dies sind Variablen, die der Funktion \u00fcbergeben werden, wenn sie aufgerufen werden. Mit diesen k\u00f6nnen innerhalb der Funktion Berechnungen durchgef\u00fchrt oder andere \u00c4nderungen vorgenommen werden. Die Argumente hingegen sind die tats\u00e4chlichen Werte, die die Funktion beim Aufruf erh\u00e4lt. Die Parameter werden in runden Klammern definiert und von Kommas getrennt. Die erste Zeile einer Funktion endet nach der Definition der Parameter mit einem Doppelpunkt.<\/li>\n\n\n\n<li><strong>Einr\u00fcckung<\/strong>: Wie bereits beschrieben wurde, spielen Einr\u00fcckungen in Python eine wichtige Rolle und zeigen an, welche Codeabschnitte zusammengeh\u00f6ren. Nach der Zeile mit dem Schl\u00fcsselwort <code>def<\/code> folgt eine Einr\u00fcckung, die sich bis zum Ende der Funktion fortsetzt und somit anzeigt, wann die Funktion endet.&nbsp;<\/li>\n\n\n\n<li><strong>R\u00fcckgabewerte<\/strong>: Um die Berechnungen, die innerhalb einer Funktion stattfinden wieder an das restliche Programm abzugeben, nutzt man sogenannte R\u00fcckgabewerte, die durch ein vorangestelltes <code>return<\/code> gekennzeichnet sind.&nbsp;Diese R\u00fcckgabewerte m\u00fcssen jedoch nicht definiert sein. Eine Funktion kann auch ohne <code>return<\/code> enden. Wichtig ist hierbei jedoch zu erw\u00e4hnen, dass die Ausf\u00fchrung des Codes auf jeden Fall nach <code>return<\/code> stoppt und der darauffolgende Code mit Einr\u00fcckung nicht mehr beachtet wird. <\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"506\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-1-1024x506.png\" alt=\"Python Funktionen \/ Python Functions\" class=\"wp-image-11453\" style=\"width:688px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-1-1024x506.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-1-300x148.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-1-768x380.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-1.png 1032w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<h3 id='was-sind-die-verschiedenen-arten-von-argumenten-und-wie-kann-man-sie-verwenden'  id=\"boomdevs_1\" class=\"wp-block-heading\" ><strong>Was sind die verschiedenen Arten von Argumenten und wie kann man sie verwenden?<\/strong><\/h3>\n\n\n\n<p>Die Parameter erm\u00f6glichen beim Aufruf einer Funktion, dass verschiedene Werte an diese \u00fcbergeben werden, welche anschlie\u00dfend f\u00fcr die weitere Berechnung genutzt werden k\u00f6nnen. Dies bildet den Hauptkern von Funktionen, da dadurch erm\u00f6glicht wird, dass ein standardisierter Codeblock mehrmals aufgerufen werden kann und die entsprechenden Ergebnisse zur\u00fcckliefert.&nbsp;<\/p>\n\n\n\n<p>Es gibt verschiedene Arten von Argumenten, die genutzt werden k\u00f6nnen:&nbsp;<\/p>\n\n\n\n<p><strong>Positionelle Argumente<\/strong>&nbsp;werden durch die Position im Funktionsaufruf festgelegt. Die Position spielt somit eine entscheidende Rolle, da diese mit der Funktionsdefinition abgeglichen wird. Dadurch kann ein Aufruf mit denselben Argumenten an unterschiedlichen Positionen auch zu anderen Ergebnissen f\u00fchren.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"419\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-2-1024x419.png\" alt=\"Python Funktionen \/ Python Functions\" class=\"wp-image-11454\" style=\"width:638px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-2-1024x419.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-2-300x123.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-2-768x314.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-2.png 1036w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p><strong>Schl\u00fcsselwort \u2013 Argumente<\/strong>&nbsp;hingegen k\u00f6nnen mithilfe von Parameternamen im Funktionsaufruf identifiziert werden. Dadurch wird der Code auch einfacher verst\u00e4ndlich, da explizit angegeben wird, welches Argument f\u00fcr welchen Parameter \u00fcbergeben wird. Durch dieses Detail spielt die Reihenfolge der Argumente keine Rolle mehr.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"407\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-3-1024x407.png\" alt=\"Python Funktionen \/ Python Functions\" class=\"wp-image-11455\" style=\"width:621px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-3-1024x407.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-3-300x119.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-3-768x305.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-3.png 1036w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Mithilfe von Standardparametern k\u00f6nnen Default \u2013 Werte hinterlegt werden, die genutzt werden, wenn kein explizites Argument f\u00fcr diesen Parameter im Funktionsaufruf angegeben wurde. Wenn jedoch ein Argument \u00fcbergeben wird, findet der Default \u2013 Wert keine Anwendung.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"410\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-4-1024x410.png\" alt=\"Python Funktionen \/ Python Functions\" class=\"wp-image-11456\" style=\"width:629px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-4-1024x410.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-4-300x120.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-4-768x307.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-4.png 1034w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>In manchen F\u00e4llen kann es sinnvoll sein, dass die Parameter nicht von vornherein fest definiert sind, sondern beim Aufruf definiert werden und sich bei jedem Funktionsaufruf \u00e4ndern k\u00f6nnen. F\u00fcr solche F\u00e4lle nutzt man in Python <code>*args<\/code> f\u00fcr die \u00dcbergabe beliebig vieler Positionsargumente und <code>**kwargs<\/code> f\u00fcr die \u00dcbergabe beliebig vieler Schl\u00fcsselwortargumente.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"671\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-5-1024x671.png\" alt=\"Python Funktionen \/ Python Functions\" class=\"wp-image-11457\" style=\"width:624px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-5-1024x671.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-5-300x197.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-5-768x504.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-5.png 1034w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<h3 id='wie-gibt-man-werte-aus-einer-funktion-zur\u00fcck'  id=\"boomdevs_2\" class=\"wp-block-heading\" ><strong>Wie gibt man Werte aus einer Funktion zur\u00fcck?<\/strong><\/h3>\n\n\n\n<p>Das Hauptziel von Funktionen ist, wiederverwendbare Codebl\u00f6cke zu erstellen, die zu verschiedenen Zeiten w\u00e4hrend der Programmausf\u00fchrung aufgerufen werden k\u00f6nnen und abh\u00e4ngig von den Argumenten verschiedene Ergebnisse zur\u00fcckliefern k\u00f6nnen. Damit das Ergebnis der Funktion wieder an das Programm zur\u00fcckgespielt werden kann, wird das <code>return<\/code> Schl\u00fcsselwort genutzt. Dadurch kann das Ergebnis der Funktion in einer Variablen abgespeichert und im Programm weiterverwendet werden.\u00a0<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"351\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-6-1024x351.png\" alt=\"Python Funktionen \/ Python Functions\" class=\"wp-image-11458\" style=\"width:633px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-6-1024x351.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-6-300x103.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-6-768x263.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-6.png 1038w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Dabei kann eine Funktion auch mehr als einen Wert zur\u00fcckgegeben. Jedoch muss dies im Funktionsaufruf bedacht werden, sodass beim Aufruf auch gen\u00fcgend Variablen zur Verf\u00fcgung gestellt werden, die die Ergebnisse abspeichern. Ist dies nicht der Fall, wirft das Programm einen Fehler.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"474\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-7-1024x474.png\" alt=\"Python Funktionen \/ Python Functions\" class=\"wp-image-11459\" style=\"width:652px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-7-1024x474.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-7-300x139.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-7-768x356.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-7.png 1032w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Bei der Arbeit mit dem <code>return<\/code> \u2013 Statement ist es jedoch wichtig zu wissen, dass es dazu f\u00fchrt, dass die Funktion an genau diesem Punkt terminiert. Wenn es somit zu fr\u00fch aufgerufen wird, wird der nachfolgende Code nicht mehr ausgef\u00fchrt. Dieses Verhalten kann beispielsweise in Schleifen schnell zu Verwirrung f\u00fchren. Deshalb sollte man darauf achten, die R\u00fcckgabe am richtigen Punkt zu platzieren.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"716\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-8-1024x716.png\" alt=\"Python Funktionen \/ Python Functions\" class=\"wp-image-11460\" style=\"width:678px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-8-1024x716.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-8-300x210.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-8-768x537.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-8.png 1032w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Nur die zweite Funktion gibt das richtige Ergebnis zur\u00fcck, da die erste Funktion bereits nach einer Iteration terminiert, da das <code>return <\/code>Statement innerhalb der <code>for<\/code> \u2013 Schleife genutzt wird.&nbsp;<\/p>\n\n\n\n<h3 id='was-sind-die-verschiedenen-lebensdauern-und-g\u00fcltigkeitsbereiche-von-variablen-in-funktionen'  id=\"boomdevs_3\" class=\"wp-block-heading\" ><strong>Was sind die verschiedenen Lebensdauern und G\u00fcltigkeitsbereiche von Variablen in Funktionen?<\/strong><\/h3>\n\n\n\n<p>Im Zusammenhang von Funktionen und Variablen muss man den Geltungsbereich von Variablen beachten. Variablen, die innerhalb einer Funktion definiert werden, haben ihren Geltungsbereich auch nur innerhalb dieser Funktion. Diese sogenannten&nbsp;<strong>lokalen Variablen&nbsp;<\/strong>werden au\u00dferhalb der Funktion nicht mal erkannt, da das au\u00dferhalb ihres G\u00fcltigkeitsbereichs ist.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"561\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-9-1024x561.png\" alt=\"Python Funktionen \/ Python Functions\" class=\"wp-image-11461\" style=\"width:659px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-9-1024x561.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-9-300x164.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-9-768x421.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-9.png 1036w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Anders verh\u00e4lt es sich hingegen mit&nbsp;<strong>globalen Variablen<\/strong>, die au\u00dferhalb der Funktion definiert werden. Diese ist auch Teil des Geltungsbereichs der Funktion und wird innerhalb der Funktion erkannt und es kann mit dieser Variablen weitergerechnet werden.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"412\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-10-1024x412.png\" alt=\"Python Funktionen \/ Python Functions\" class=\"wp-image-11462\" style=\"width:654px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-10-1024x412.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-10-300x121.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-10-768x309.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-10.png 1034w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Um jedoch \u00c4nderungen an dieser Variablen vornehmen zu k\u00f6nnen oder deren Wert zu \u00fcberschreiben, muss vorher das Schl\u00fcsselwort <code>global<\/code> zusammen mit der Variablen genutzt werden, um den Geltungsbereich anzupassen, sodass die \u00c4nderungen auch au\u00dferhalb der Funktion geltend sind.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"538\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-11-1024x538.png\" alt=\"Python Funktionen \/ Python Functions\" class=\"wp-image-11463\" style=\"width:672px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-11-1024x538.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-11-300x158.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-11-768x403.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-11.png 1036w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<h3 id='was-sind-funktionen-die-schon-in-python-eingebaut-sind'  id=\"boomdevs_4\" class=\"wp-block-heading\" ><strong>Was sind Funktionen, die schon in Python eingebaut sind?<\/strong><\/h3>\n\n\n\n<p>Python hat eine Vielzahl von standardisierten Funktionen, die bereits so hinterlegt sind, dass sie ohne weiteres genutzt werden k\u00f6nnen. Die wichtigsten, eingebauten Funktionen in Python sind:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>print()<\/code><\/strong>: Diese Funktion gibt die Argumente innerhalb der Klammern in der Konsole oder dem Jupyter Notebook aus. Die folgenden Programmbausteine werden weiterhin ausgef\u00fchrt. Hierbei k\u00f6nnen auch mehrere Argumente \u00fcbergeben werden, die dann in der entsprechenden Reihenfolge zusammengef\u00fcgt und mit einem Leerzeichen getrennt werden.&nbsp;<\/li>\n\n\n\n<li><strong><code>len()<\/code><\/strong>: Diese Funktion gibt die L\u00e4nge von verschiedenen Datenstrukturen zur\u00fcck. Sie kann beispielsweise daf\u00fcr genutzt werden, um die Anzahl von Zeichen in einem String auszugeben.<\/li>\n\n\n\n<li><strong><code>type()<\/code><\/strong>: Mithilfe dieses Aufrufs kann der Datentyp einer Variablen zur\u00fcckgegeben werden.&nbsp;<\/li>\n\n\n\n<li><strong><code>range()<\/code><\/strong>:&nbsp;&nbsp;Die range \u2013 Funktion gibt eine Folge von Zahlen zur\u00fcck unter Angabe eines Start- und eines Endpunktes. Der Endpunkt ist hierbei nicht Teil der Folge.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"854\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-12-1024x854.png\" alt=\"Python Funktionen \/ Python Functions\" class=\"wp-image-11464\" style=\"width:667px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-12-1024x854.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-12-300x250.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-12-768x640.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-12.png 1120w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<h3 id='was-ist-die-rekursion'  id=\"boomdevs_5\" class=\"wp-block-heading\" >Was ist die Rekursion?<\/h3>\n\n\n\n<p>Die <a href=\"https:\/\/databasecamp.de\/python\/rekursion\" target=\"_blank\" rel=\"noreferrer noopener\">Rekursion<\/a> bezeichnet eine Programmiertechnik bei der sich eine Funktion selbst aufrufen kann. In Python kann dies umgesetzt werden, indem eine Funktion sich innerhalb der Definition einfach selbst aufruft. Bei dem Aufruf wird eine neue Instanz erzeugt, die unabh\u00e4ngig von der aufrufenden Instanz ist und somit ihre eigenen Variablen hat.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"422\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/recursion-python-en-e1682577902803-1024x422.png\" alt=\"\" class=\"wp-image-6872\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/recursion-python-en-e1682577902803-1024x422.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/recursion-python-en-e1682577902803-300x124.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/recursion-python-en-e1682577902803-768x317.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/recursion-python-en-e1682577902803-1320x544.png 1320w, https:\/\/databasecamp.de\/wp-content\/uploads\/recursion-python-en-e1682577902803.png 1535w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Erkl\u00e4rung des Python &#8211; Beispiels | Quelle: Autor<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Durch diese Technik k\u00f6nnen rekursive Berechnungen durchgef\u00fchrt werden, die zum Beispiel bei der Fakult\u00e4t ben\u00f6tigt werden. Die Fakult\u00e4t ist definiert als das Produkt der Ganzzahl mit der Fakult\u00e4t der vorangegangenen Ganzzahl. Dies l\u00e4sst sich in Python wie folgt umsetzen.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"478\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-13-1024x478.png\" alt=\"Python Funktionen \/ Python Functions\" class=\"wp-image-11465\" style=\"width:636px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-13-1024x478.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-13-300x140.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-13-768x359.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-13.png 1032w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Der Prozess der Rekursion unterscheidet dabei zwei F\u00e4lle:&nbsp;<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Basisfall<\/strong>: Der Basisfall umfasst die Bedingung, bei der die Rekursion stoppt, die Funktion aufh\u00f6rt sich selbst aufzurufen und ein Ergebnis zur\u00fcckgibt. In dem gezeigten Beispiel ist der Basisfall erreicht, wenn <code>n<\/code> den Wert null angenommen hat.\u00a0<\/li>\n\n\n\n<li><strong>Rekursiver Fall<\/strong>: Der rekursive Fall ist die Bedingung unter der die Funktion sich weiterhin selbst aufruft, um eine Teilrechnung zu vollziehen. Bei der Fakult\u00e4t ist der rekursive Fall erreicht, solange <code>n<\/code> ungleich Null ist, da dann weiterhin die Fakult\u00e4t der kleineren Zahl berechnet werden muss.\u00a0<\/li>\n<\/ol>\n\n\n\n<h3 id='was-sind-funktionen-h\u00f6herer-ordnung'  id=\"boomdevs_6\" class=\"wp-block-heading\" >Was sind Funktionen h\u00f6herer Ordnung?<\/h3>\n\n\n\n<p>Python Funktionen h\u00f6herer Ordnung zeichnen sich dadurch aus, dass sie ganze Funktionen als Eingabevariablen nutzen. Bis zu diesem Zeitpunkt hatten wir uns hingegen nur mit Funktionen besch\u00e4ftigt, die einzelne Werte oder m\u00f6glicherweise noch Listen als Eingabe benutzen. Mithilfe von diesem Konzept k\u00f6nnen in Python leistungsf\u00e4hige Applikationen erstellt werden, die in der Lage sind eine Funktion auf verschiedene Objekte hintereinander anzuwenden. <\/p>\n\n\n\n<p>In Python gibt es standardm\u00e4\u00dfige Funktionen h\u00f6herer Ordnung, die in vielen Programmen zum Einsatz kommen. Die h\u00e4ufigsten sind: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>map()<\/code> verwendet eine bestimmte Funktion um diese auf alle Elemente in einem Iterable, also beispielsweise einer Liste oder einem Tupel, anzuwenden. Als Ergebnis gibt es dasselbe Iterable mit den Ergebnissen aus der angewendeten Funktion zur\u00fcck. In unserem Beispiel nutzt <code>map()<\/code> die Funktion <code>square()<\/code> als erstes Argument und f\u00fchrt dieses auf einer <a href=\"https:\/\/databasecamp.de\/python\/python-list\" target=\"_blank\" rel=\"noreferrer noopener\">Liste<\/a> mit Zahlen aus. Als Ergebnis entsteht eine neue Liste in der jedes vorherige Element entsprechend quadriert wurde: <\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"384\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Functions-19-1024x384.png\" alt=\"Python Functions\" class=\"wp-image-7981\" style=\"width:781px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Functions-19-1024x384.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Functions-19-300x113.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Functions-19-768x288.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Functions-19.png 1130w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><code>filter()<\/code> nutzt als Eingabe eine Funktion, \u00fcber die bestimmt wird nach welcher Logik gefiltert werden soll. Als zweites Argument wird analog zu <code>map()<\/code> ein Iterable genutzt, dessen Elemente entsprechend gefiltert werden soll. In unserem Beispiel sollen nur die Elemente enthalten bleiben, die gerade sind, also durch zwei teilbar sind. Die Filterlogik wird in der Funktion <code>is_even()<\/code> hinterlegt und als erstes Argument an <code>filter()<\/code> \u00fcbergeben. In der Liste <code>numbers<\/code> sind dann alle Zahlen enthalten, die gefiltert werden sollen und von der lediglich die zwei und die vier \u00fcbrig bleiben. <\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"378\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Functions-20-1024x378.png\" alt=\"Python Functions\" class=\"wp-image-7982\" style=\"width:775px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Functions-20-1024x378.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Functions-20-300x111.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Functions-20-768x283.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Functions-20.png 1122w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\">\n<li><code>reduce()<\/code> bietet die M\u00f6glichkeit eine Berechnung mit allen Elementen des Iterables durchzuf\u00fchren. Dadurch k\u00f6nnen beispielsweise alle Elemente miteinander multipliziert oder summiert werden. Somit liefert <code>reduce()<\/code> auch als Ergebnis kein Iterable, sondern einen einzigen Wert zur\u00fcck. In unserem Beispiel berechnen wir das Produkt aus allen Elementen, die in der Liste <code>numbers<\/code> hinterlegt sind. Die Logik des Multiplizierens ist dabei in der Funktion <code>multiply<\/code> hinterlegt. <\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"441\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Functions-21-1024x441.png\" alt=\"Python Functions\" class=\"wp-image-7983\" style=\"width:780px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Functions-21-1024x441.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Functions-21-300x129.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Functions-21-768x331.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Functions-21.png 1124w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Funktionen h\u00f6herer Ordnung bieten ein leistungsstarkes Werkzeug, indem sie es erm\u00f6glichen, dass ganze Funktionen als Eingabeparameter f\u00fcr eine andere Funktion dienen k\u00f6nnen. Dadurch lassen sich auch einzelne Codebausteine effizient wiederverwertet und dadurch der Code \u00fcbersichtlicher gestalten. <\/p>\n\n\n\n<h3 id='was-sind-lambda-funktionen'  id=\"boomdevs_7\" class=\"wp-block-heading\" >Was sind Lambda-Funktionen?<\/h3>\n\n\n\n<p>Die <a href=\"https:\/\/databasecamp.de\/python\/python-lambdas\" target=\"_blank\" rel=\"noreferrer noopener\">Lambda Funktionen in Python<\/a> sind sogenannte anonyme Funktionen, da f\u00fcr die Definition kein expliziter Name ben\u00f6tigt wird. Stattdessen kann innerhalb von einer Zeile unter der Verwendung des Stichworts <code>lambda<\/code> eine funktionierende Funktion definiert werden. Aufgrund dieses Stichworts werden die Funktionen auch oft nur Lambdas oder Lambda-Funktionen genannt. Auch in anderen Programmiersprachen, wie beispielsweise C# oder Java, werden solche Funktionen eingesetzt. <\/p>\n\n\n\n<p>Sie lassen sich ganz einfach mit dem Parameter <code>lambda<\/code>, der Nennung der Variablen und dem Ausdruck, den die Funktion berechnen soll definieren:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"202\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-3-1024x202.png\" alt=\"Python Lambda\" class=\"wp-image-4903\" style=\"aspect-ratio:5.098837209302325;width:744px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-3-1024x202.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-3-300x59.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-3-768x152.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-3-1536x303.png 1536w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-3-1320x261.png 1320w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-3.png 1610w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>An diesem Beispiel erkennt man auch deutlich, warum Python Lambdas anonyme Funktionen sind: Der Funktion selbst kann man n\u00e4mlich keinen Namen geben, man kann sie lediglich in einer Variablen (<code>function<\/code>) abspeichern.<\/p>\n\n\n\n<p>Wenn wir also die Summenfunktion aus unserem anf\u00e4nglichen Beispiel mithilfe von Python Lambdas nachbauen wollen, sieht das folgenderma\u00dfen aus: <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"200\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-4-1024x200.png\" alt=\"Python Lambda\" class=\"wp-image-4904\" style=\"aspect-ratio:5.153846153846154;width:736px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-4-1024x200.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-4-300x59.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-4-768x150.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-4-1536x300.png 1536w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-4-1320x258.png 1320w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-4.png 1608w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Wie man sieht, k\u00f6nnen auch mehr als ein Argument an Python Lambdas weitergegeben werden. Die Funktion <code>sum_difference<\/code> k\u00f6nnen wir jedoch nicht mit Python Lambdas nachbauen, da die anonymen Funktionen immer nur ein Resultat ausgeben k\u00f6nnen. Stattdessen m\u00fcssen also zwei unterschiedliche Funktionen definiert werden und auch doppelt gerufen werden:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"288\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-5-1024x288.png\" alt=\"Python Lambda\" class=\"wp-image-4905\" style=\"aspect-ratio:3.5587044534412957;width:731px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-5-1024x288.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-5-300x84.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-5-768x216.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-5-1536x433.png 1536w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-5-1320x372.png 1320w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Lambda-5.png 1612w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Es gibt verschiedene F\u00e4lle in denen es sinnvoll sein kann, Python Lambdas zu nutzen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wenn simple Funktionen definiert werden, die lediglich einen Output haben und eine geringe Zahl an Inputs. In gro\u00dfen Projekten kann es sinnvoll sein, eine solche Funktion nicht explizit zu definieren, um Platz zu sparen und nicht unn\u00f6tig f\u00fcr Verwirrung zu sorgen. Des weiteren erspart man sich in umfangreichen Klassen Probleme bei der Vererbung etc. <\/li>\n\n\n\n<li>Dasselbe Argument zieht auch dann, wenn Funktionen nur ein einziges Mal zum Einsatz kommen. Dann kann man auch auf die explizite Definition verzichten, da sowieso niemand mehr auf die Funktion zugreifen muss. <\/li>\n\n\n\n<li>Zus\u00e4tzlich k\u00f6nnen anonyme Funktionen daf\u00fcr sorgen, dass der Inhalt der Funktion schneller und einfacher verst\u00e4ndlich wird, da es in einer einzige Zeile definiert ist. Die explizite Definition von Funktionen kann dazu f\u00fchren, dass eine gewisse Verst\u00e4ndlichkeit verloren geht. <\/li>\n\n\n\n<li>Dar\u00fcber hinaus gibt es in Python Funktionen, wie beispielsweise &#8220;filter&#8221; oder &#8220;map&#8221;, die Funktionen als Input nehmen. In diesen F\u00e4llen ist es also sinnvoll, Python Lambda zu nutzen. <\/li>\n<\/ul>\n\n\n\n<h3 id='was-sind-dekoratoren-in-python'  id=\"boomdevs_8\" class=\"wp-block-heading\" >Was sind Dekoratoren in Python?<\/h3>\n\n\n\n<p>Die sogenannten Python Decorators bieten die M\u00f6glichkeit, die Funktionalit\u00e4t einer Funktion abzu\u00e4ndern. Auf den ersten Blick mag das sinnlos erscheinen, da man auch einfach die urspr\u00fcngliche Funktion ab\u00e4ndern kann. In der Praxis kann die Nutzung von Python Decorators jedoch durchaus Sinn machen und dazu beitragen, dass der Code einfacher und verst\u00e4ndlicher wird. <\/p>\n\n\n\n<p>Beim Logging von Programmen werden h\u00e4ufig Decorators eingesetzt, um mitzuschreiben, welche Funktion wann aufgerufen wurde. Damit man diese Befehle nicht in jede Funktion explizit mit aufgenommen werden muss, nutzt man Decorator, um das Logging einmal zentral definieren und anschlie\u00dfend mehrfach einsetzen zu k\u00f6nnen. <\/p>\n\n\n\n<p>Dazu schauen wir uns ein einfaches Beispiel an und nutzen eine simple Funktion, die einfach nur &#8220;Hello!&#8221; ausgibt: <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"322\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-14-1024x322.png\" alt=\"Python Funktionen \/ Python Functions\" class=\"wp-image-11466\" style=\"width:706px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-14-1024x322.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-14-300x94.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-14-768x242.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-14.png 1030w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Dazu k\u00f6nnen wir jetzt eine Funktion definieren, die den Aufruf von <code>say_hello()<\/code> dokumentiert, sodass man anschlie\u00dfend feststellen kann, ob der Aufruf funktioniert hat und die Funktion wie gewollt ausgef\u00fchrt wurde. Dazu m\u00fcssen wir in eine Funktion in der Funktion definieren. <\/p>\n\n\n\n<p>In unserem Fall ist die \u00e4u\u00dfere Funktion <code>log_decorator<\/code>, welche eine Funktion <code>func<\/code> als Input nutzt. Diese \u00e4u\u00dfere Funktion wird sp\u00e4ter f\u00fcr den Decorator genutzt. Wenn wir an dieser Stelle keine zweite, innere Funktion definieren w\u00fcrden, w\u00fcrde die Funktion nur beim initialen Definieren des Decorators aufgerufen werden und nicht jedes Mal, wenn <code>say_hello()<\/code> aufgerufen wird.<\/p>\n\n\n\n<p>Die innere Funktion <code>wrapper()<\/code> beschreibt nun die eigentliche Funktionalit\u00e4t, also dass es zuerst eine Ausgabe gibt, dann die Funktion aufgerufen wird und anschlie\u00dfend wieder eine Ausgabe gemacht wird: <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"332\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-15-1024x332.png\" alt=\"Python Funktionen \/ Python Functions\" class=\"wp-image-11467\" style=\"width:725px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-15-1024x332.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-15-300x97.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-15-768x249.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-15.png 1036w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Nun muss die <code>say_hello()<\/code> Funktion nochmals neu mit dem vorangestellten <code>log_decorator<\/code> definiert werden. Ein Python Decorator ist durch das anf\u00e4ngliche @-Zeichen erkennbar. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"414\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-16-1024x414.png\" alt=\"Python Funktionen \/ Python Functions\" class=\"wp-image-11468\" style=\"width:725px;height:auto\" srcset=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-16-1024x414.png 1024w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-16-300x121.png 300w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-16-768x310.png 768w, https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Funktionen-16.png 1044w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Der Vorteil, welcher sich aus der Nutzung des Python Decorators ergibt, ist nun, dass beim Ausbau des Programms die Wrapper Funktion wieder verwendet werden kann. Wenn wir nun also eine weitere Funktion hinzuf\u00fcgen, wie beispielsweise <code>say_bye()<\/code>, k\u00f6nnen wir diese auch mit demselben Decorator loggen und m\u00fcssen es nicht zus\u00e4tzlich definieren. <\/p>\n\n\n\n<h3 id='das-solltest-du-mitnehmen'  id=\"boomdevs_9\" class=\"wp-block-heading\" >Das solltest Du mitnehmen<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Funktionen sind eine wichtige S\u00e4ule in der Python-Programmierung und erm\u00f6glichen es, dass bestimmte Logiken und Codebestandteile mehrmals aufgerufen werden k\u00f6nnen. <\/li>\n\n\n\n<li>F\u00fcr die Definition einer Funktion ben\u00f6tigt man das vorangestellte Schl\u00fcsselwort <code>def<\/code>, einen Namen f\u00fcr die Funktion und eine Reihe von Parametern, die in runden Klammern definiert werden. <\/li>\n\n\n\n<li>Die Parameter k\u00f6nnen entweder positionelle Argumente sein, bei denen die Reihenfolge der Werte entscheidend ist, oder Schl\u00fcsselwort Argumente, bei dem \u00fcber Schl\u00fcsselw\u00f6rter der Wert dem richtigen Parameter zugeordnet wird. <\/li>\n\n\n\n<li>Bei der Rekursion handelt es sich um ein Konzept bei der eine Funktion sich beim Durchlaufen des Algorithmus selbst aufruft. Dies kann beispielsweise bei der Berechnung der Fakult\u00e4t ben\u00f6tigt werden.<\/li>\n\n\n\n<li>Lambda-Funktionen, oder sogenannte anonyme Funktionen, k\u00f6nnen innerhalb einer Zeile definiert werden und ben\u00f6tigen keinen Funktionsnamen. <\/li>\n\n\n\n<li>Die Python Decorator erm\u00f6glichen es, die Funktionalit\u00e4t einer Funktion zu erweitern, ohne dass der urspr\u00fcngliche Code ver\u00e4ndert wird. <\/li>\n<\/ul>\n\n\n<style id=\"sp_pcp_dynamic_style331\">#pcp_wrapper-331:not(.sps-glossary-layout) .sp-pcp-row,#pcp_wrapper-331 .sps-glossary-items-group .sps-glossary-items-content {margin-right: -10px;margin-left: -10px;}#pcp_wrapper-331 .sp-pcp-row [class*='sp-pcp-col-']{padding-right: 10px;padding-left: 10px; padding-bottom:20px;}.pcp-wrapper-331 .sp-pcp-title a {color: #111;display: inherit;} .pcp-wrapper-331 .sp-pcp-title a:hover {color: #e1a100;}.pcp-wrapper-331 .sp-pcp-post-content{color: #444; }#pcp_wrapper-331 .sp-pcp-post {padding: 0 0 0 0;}#pcp_wrapper-331.sp-slider_layout .sp-pcp-post .sp-pcp-post-details {top: 0; right:0; bottom:0; left:0;}#pcp_wrapper-331 .sp-pcp-post {border: 0px solid #e2e2e2; border-radius: 0px }#pcp_wrapper-331 .sp-pcp-post{background-color: transparent;}#pcp_wrapper-331 .pcp-post-thumb-wrapper{border: 0px solid #dddddd;border-radius:0px;}.pcp-wrapper-331 .sp-pcp-post-meta li,.pcp-wrapper-331 .sp-pcp-post-meta ul,.pcp-wrapper-331 .sp-pcp-post-meta li a{color: #888;}.pcp-wrapper-331 .sp-pcp-post-meta li a:hover{color: #e1a100;}#pcp_wrapper-331 .pcp-readmore-link{ background: transparent; color: #111; border: 1px solid #888; border-radius: 0px; } #pcp_wrapper-331 .pcp-readmore-link:hover { background-color: #e1a100; color: #fff; border-color: #e1a100; }#pcp_wrapper-331 .pcp-post-pagination .page-numbers.current, #pcp_wrapper-331 .pcp-post-pagination a.active , #pcp_wrapper-331 .pcp-post-pagination a:hover{ color: #ffffff; background: #e1a100; border-color: #e1624b; }#pcp_wrapper-331 .pcp-post-pagination .page-numbers, .pcp-post-pagination a{ background: #ffffff; color:#5e5e5e; border: 2px solid #bbbbbb;border-radius: 2px; }#pcp_wrapper-331 .pcp-post-pagination{text-align: left;}@media (min-width: 1200px) {.sp-pcp-row .sp-pcp-col-xl-1 {flex: 0 0 100%;}.sp-pcp-row .sp-pcp-col-xl-2 {flex: 1 1 calc( 50% - 20px);}.sp-pcp-row .sp-pcp-col-xl-3 {flex: 1 1 calc( 33.333% - 20px);}.sp-pcp-row .sp-pcp-col-xl-4 {flex: 1 1 calc( 25% - 20px);}.sp-pcp-row .sp-pcp-col-xl-5 { flex: 1 1 calc( 20% - 20px);}.sp-pcp-row .sp-pcp-col-xl-6 {flex: 1 1 calc( 16.66666666666667% - 20px);}.sp-pcp-row .sp-pcp-col-xl-7 {flex: 1 1 calc( 14.28571428% - 20px);}.sp-pcp-row .sp-pcp-col-xl-8 {flex: 1 1 calc( 12.5% - 20px);}}@media (max-width: 1200px) {.sp-pcp-row .sp-pcp-col-lg-1 {flex: 0 0 100%;}.sp-pcp-row .sp-pcp-col-lg-2 {flex: 1 1 calc( 50% - 20px);}.sp-pcp-row .sp-pcp-col-lg-3 {flex: 1 1 calc( 33.333% - 20px);}.sp-pcp-row .sp-pcp-col-lg-4 {flex: 1 1 calc( 25% - 20px);}.sp-pcp-row .sp-pcp-col-lg-5 { flex: 1 1 calc( 20% - 20px);}.sp-pcp-row .sp-pcp-col-lg-6 {flex: 1 1 calc( 16.66666666666667% - 20px);}.sp-pcp-row .sp-pcp-col-lg-7 {flex: 1 1 calc( 14.28571428% - 20px);}.sp-pcp-row .sp-pcp-col-lg-8 {flex: 1 1 calc( 12.5% - 20px);}}@media (max-width: 992px) {.sp-pcp-row .sp-pcp-col-md-1 {flex: 0 0 100%;}.sp-pcp-row .sp-pcp-col-md-2 {flex: 1 1 calc( 50% - 20px);}.sp-pcp-row .sp-pcp-col-md-2-5 {flex: 0 0 75%;}.sp-pcp-row .sp-pcp-col-md-3 {flex: 1 1 calc( 33.333% - 20px);}.sp-pcp-row .sp-pcp-col-md-4 {flex: 1 1 calc( 25% - 20px);}.sp-pcp-row .sp-pcp-col-md-5 { flex: 1 1 calc( 20% - 20px);}.sp-pcp-row .sp-pcp-col-md-6 {flex: 1 1 calc( 16.66666666666667% - 20px);}.sp-pcp-row .sp-pcp-col-md-7 {flex: 1 1 calc( 14.28571428% - 20px);}.sp-pcp-row .sp-pcp-col-md-8 {flex: 1 1 calc( 12.5% - 20px);}}@media (max-width: 768px) {.sp-pcp-row .sp-pcp-col-sm-1 {flex: 0 0 100%;}.sp-pcp-row .sp-pcp-col-sm-2 {flex: 1 1 calc( 50% - 20px);}.sp-pcp-row .sp-pcp-col-sm-2-5 {flex: 0 0 75%;}.sp-pcp-row .sp-pcp-col-sm-3 {flex: 1 1 calc( 33.333% - 20px);}.sp-pcp-row .sp-pcp-col-sm-4 {flex: 1 1 calc( 25% - 20px);}.sp-pcp-row .sp-pcp-col-sm-5 { flex: 1 1 calc( 20% - 20px);}.sp-pcp-row .sp-pcp-col-sm-6 {flex: 1 1 calc( 16.66666666666667% - 20px);}.sp-pcp-row .sp-pcp-col-sm-7 {flex: 1 1 calc( 14.28571428% - 20px);}.sp-pcp-row .sp-pcp-col-sm-8 {flex: 1 1 calc( 12.5% - 20px);}}@media (max-width: 420px) {.sp-pcp-row .sp-pcp-col-xs-1 {flex: 0 0 100%;}.sp-pcp-row .sp-pcp-col-xs-2 {flex: 1 1 calc( 50% - 20px);}.sp-pcp-row .sp-pcp-col-xs-3 {flex: 1 1 calc( 33.333% - 20px);}.sp-pcp-row .sp-pcp-col-xs-4 {flex: 1 1 calc( 25% - 20px);}.sp-pcp-row .sp-pcp-col-xs-5 { flex: 1 1 calc( 20% - 20px);}.sp-pcp-row .sp-pcp-col-xs-6 {flex: 1 1 calc( 16.66666666666667% - 20px);}.sp-pcp-row .sp-pcp-col-xs-7 {flex: 1 1 calc( 14.28571428% - 20px);}.sp-pcp-row .sp-pcp-col-xs-8 {flex: 1 1 calc( 12.5% - 20px);}}<\/style>\n<div id=\"pcp_wrapper-331\" class=\"sp-pcp-section sp-pcp-container pcp-wrapper-331\">\n\t<div class=\"sp-pcp-row\">\n\t\t\t\t<div class=\" sp-pcp-col-xs-1 sp-pcp-col-sm-1 sp-pcp-col-md-2 sp-pcp-col-lg-3 sp-pcp-col-xl-3\">\n\t\t\t\t\t\t<div class=\"sp-pcp-post pcp-item-12673\" data-id=\"12673\">\n\t\t\t\t\t\t\t\t<div class=\"pcp-post-thumb-wrapper\">\n\t\t\t\t\t<div class=\"sp-pcp-post-thumb-area\">\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"sp-pcp-thumb\" href=\"https:\/\/databasecamp.de\/python\/cloudbasierte-repositories\" target=\"_self\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/main_SSSSSSSS.png\" width=\"921\" height=\"613\" alt=\"cloudbasierte repositories\">\n\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<h2 class=\"sp-pcp-title\">\n\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/databasecamp.de\/python\/cloudbasierte-repositories\" target=\"_self\">Wie Ingenieurteams Build-Fehler durch cloudbasierte Repositories reduzieren<\/a>\t\t\t\t\t\t\t<\/h2>\n\t\t\t\t\t\t<div class=\"sp-pcp-post-meta\">\n\t\t\t<ul><li>\t\t\t\t\t<i class=\"fa fa-calendar\"><\/i>\n\t\t\t\t\t<time class=\"entry-date published updated\">6. M\u00e4rz 2026<\/time>\n\t\t\t\t\t<\/li><\/ul>\t\t<\/div>\n\t\t\t\t\t<div class=\"sp-pcp-post-content\">\n\t\t\t<p>Cloudbasierte Repositories senken die Zahl der Build-Fehler, weil sie eine einheitliche, zentrale und stark automatisierte Umgebung f\u00fcr die Softwareentwicklung bereitstellen. Wenn der Build-Prozess von lokalen Entwicklerrechnern in die Cloud verlegt wird, verschwinden Inkonsistenzen &#8211; das bekannte \u201eAuf meinem Rechner funktioniert es\u201c-Problem. Diese Systeme erzwingen standardisierte Build-Konfigurationen, verwalten Abh\u00e4ngigkeiten genau und nutzen strenge Zugriffskontrollen (IAM). So&hellip;&nbsp;<a href=\"https:\/\/databasecamp.de\/python\/cloudbasierte-repositories\" class=\"\" rel=\"bookmark\">Weiterlesen &raquo;<span class=\"screen-reader-text\">Wie Ingenieurteams Build-Fehler durch cloudbasierte Repositories reduzieren<\/span><\/a><\/p>\n\t\t<div class=\"sp-pcp-readmore\">\n\t\t\t\t\t\t\t<a class=\"pcp-readmore-link\" target=\"_self\" href=\"https:\/\/databasecamp.de\/python\/cloudbasierte-repositories\">\n\t\t\t\t\t\tWeiterlesen <\/a>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\" sp-pcp-col-xs-1 sp-pcp-col-sm-1 sp-pcp-col-md-2 sp-pcp-col-lg-3 sp-pcp-col-xl-3\">\n\t\t\t\t\t\t<div class=\"sp-pcp-post pcp-item-10401\" data-id=\"10401\">\n\t\t\t\t\t\t\t\t<div class=\"pcp-post-thumb-wrapper\">\n\t\t\t\t\t<div class=\"sp-pcp-post-thumb-area\">\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"sp-pcp-thumb\" href=\"https:\/\/databasecamp.de\/python\/python-tutorial\" target=\"_self\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Programming-Basics-930x620.png\" width=\"930\" height=\"620\" alt=\"Python Programming Basics \/ Python Tutorial\">\n\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<h2 class=\"sp-pcp-title\">\n\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/databasecamp.de\/python\/python-tutorial\" target=\"_self\">Python Tutorial f\u00fcr Anf\u00e4nger<\/a>\t\t\t\t\t\t\t<\/h2>\n\t\t\t\t\t\t<div class=\"sp-pcp-post-meta\">\n\t\t\t<ul><li>\t\t\t\t\t<i class=\"fa fa-calendar\"><\/i>\n\t\t\t\t\t<time class=\"entry-date published updated\">13. September 2025<\/time>\n\t\t\t\t\t<\/li><\/ul>\t\t<\/div>\n\t\t\t\t\t<div class=\"sp-pcp-post-content\">\n\t\t\t<p>Beherrschen Sie die Grundlagen mit diesem Python Tutorial. Erfahren Sie mehr \u00fcber Syntax, Datentypen, Kontrollstrukturen und mehr.<\/p>\n\t\t<div class=\"sp-pcp-readmore\">\n\t\t\t\t\t\t\t<a class=\"pcp-readmore-link\" target=\"_self\" href=\"https:\/\/databasecamp.de\/python\/python-tutorial\">\n\t\t\t\t\t\tWeiterlesen <\/a>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\" sp-pcp-col-xs-1 sp-pcp-col-sm-1 sp-pcp-col-md-2 sp-pcp-col-lg-3 sp-pcp-col-xl-3\">\n\t\t\t\t\t\t<div class=\"sp-pcp-post pcp-item-10392\" data-id=\"10392\">\n\t\t\t\t\t\t\t\t<div class=\"pcp-post-thumb-wrapper\">\n\t\t\t\t\t<div class=\"sp-pcp-post-thumb-area\">\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"sp-pcp-thumb\" href=\"https:\/\/databasecamp.de\/python\/python-variable\" target=\"_self\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Python-Variables-930x620.png\" width=\"930\" height=\"620\" alt=\"Python Variables \/ Python Variablen\">\n\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<h2 class=\"sp-pcp-title\">\n\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/databasecamp.de\/python\/python-variable\" target=\"_self\">Was sind Python Variablen?<\/a>\t\t\t\t\t\t\t<\/h2>\n\t\t\t\t\t\t<div class=\"sp-pcp-post-meta\">\n\t\t\t<ul><li>\t\t\t\t\t<i class=\"fa fa-calendar\"><\/i>\n\t\t\t\t\t<time class=\"entry-date published updated\">6. September 2025<\/time>\n\t\t\t\t\t<\/li><\/ul>\t\t<\/div>\n\t\t\t\t\t<div class=\"sp-pcp-post-content\">\n\t\t\t<p>Eintauchen in Python Variablen: Erforschen Sie Datenspeicherung, dynamische Typisierung, Scoping und Tipps f\u00fcr effizienten Code.<\/p>\n\t\t<div class=\"sp-pcp-readmore\">\n\t\t\t\t\t\t\t<a class=\"pcp-readmore-link\" target=\"_self\" href=\"https:\/\/databasecamp.de\/python\/python-variable\">\n\t\t\t\t\t\tWeiterlesen <\/a>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\" sp-pcp-col-xs-1 sp-pcp-col-sm-1 sp-pcp-col-md-2 sp-pcp-col-lg-3 sp-pcp-col-xl-3\">\n\t\t\t\t\t\t<div class=\"sp-pcp-post pcp-item-8869\" data-id=\"8869\">\n\t\t\t\t\t\t\t\t<div class=\"pcp-post-thumb-wrapper\">\n\t\t\t\t\t<div class=\"sp-pcp-post-thumb-area\">\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"sp-pcp-thumb\" href=\"https:\/\/databasecamp.de\/python\/jenkins\" target=\"_self\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Jenkins-930x620.png\" width=\"930\" height=\"620\" alt=\"Jenkins\">\n\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<h2 class=\"sp-pcp-title\">\n\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/databasecamp.de\/python\/jenkins\" target=\"_self\">Was ist Jenkins?<\/a>\t\t\t\t\t\t\t<\/h2>\n\t\t\t\t\t\t<div class=\"sp-pcp-post-meta\">\n\t\t\t<ul><li>\t\t\t\t\t<i class=\"fa fa-calendar\"><\/i>\n\t\t\t\t\t<time class=\"entry-date published updated\">22. Februar 2025<\/time>\n\t\t\t\t\t<\/li><\/ul>\t\t<\/div>\n\t\t\t\t\t<div class=\"sp-pcp-post-content\">\n\t\t\t<p>Jenkins beherrschen: Rationalisieren Sie DevOps mit leistungsstarker Automatisierung. Lernen Sie CI\/CD-Konzepte und deren Umsetzung.<\/p>\n\t\t<div class=\"sp-pcp-readmore\">\n\t\t\t\t\t\t\t<a class=\"pcp-readmore-link\" target=\"_self\" href=\"https:\/\/databasecamp.de\/python\/jenkins\">\n\t\t\t\t\t\tWeiterlesen <\/a>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\" sp-pcp-col-xs-1 sp-pcp-col-sm-1 sp-pcp-col-md-2 sp-pcp-col-lg-3 sp-pcp-col-xl-3\">\n\t\t\t\t\t\t<div class=\"sp-pcp-post pcp-item-8647\" data-id=\"8647\">\n\t\t\t\t\t\t\t\t<div class=\"pcp-post-thumb-wrapper\">\n\t\t\t\t\t<div class=\"sp-pcp-post-thumb-area\">\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"sp-pcp-thumb\" href=\"https:\/\/databasecamp.de\/python\/bedingte-anweisung\" target=\"_self\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/Conditional-Statements-930x620.png\" width=\"930\" height=\"620\" alt=\"Conditional Statements in Python \/ If else Python \/ Bedingte Anweisung\">\n\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<h2 class=\"sp-pcp-title\">\n\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/databasecamp.de\/python\/bedingte-anweisung\" target=\"_self\">Python-Tutorial: Bedingte Anweisungen und If\/Else Bl\u00f6cke<\/a>\t\t\t\t\t\t\t<\/h2>\n\t\t\t\t\t\t<div class=\"sp-pcp-post-meta\">\n\t\t\t<ul><li>\t\t\t\t\t<i class=\"fa fa-calendar\"><\/i>\n\t\t\t\t\t<time class=\"entry-date published updated\">7. Dezember 2024<\/time>\n\t\t\t\t\t<\/li><\/ul>\t\t<\/div>\n\t\t\t\t\t<div class=\"sp-pcp-post-content\">\n\t\t\t<p>Lernen Sie, wie man bedingte Anweisungen in Python verwendet. Verstehen Sie if-else und verschachtelte if- und elif-Anweisungen.<\/p>\n\t\t<div class=\"sp-pcp-readmore\">\n\t\t\t\t\t\t\t<a class=\"pcp-readmore-link\" target=\"_self\" href=\"https:\/\/databasecamp.de\/python\/bedingte-anweisung\">\n\t\t\t\t\t\tWeiterlesen <\/a>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\" sp-pcp-col-xs-1 sp-pcp-col-sm-1 sp-pcp-col-md-2 sp-pcp-col-lg-3 sp-pcp-col-xl-3\">\n\t\t\t\t\t\t<div class=\"sp-pcp-post pcp-item-10409\" data-id=\"10409\">\n\t\t\t\t\t\t\t\t<div class=\"pcp-post-thumb-wrapper\">\n\t\t\t\t\t<div class=\"sp-pcp-post-thumb-area\">\n\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"sp-pcp-thumb\" href=\"https:\/\/databasecamp.de\/python\/xor\" target=\"_self\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/databasecamp.de\/wp-content\/uploads\/XOR-930x620.png\" width=\"930\" height=\"620\" alt=\"XOR\">\n\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<h2 class=\"sp-pcp-title\">\n\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/databasecamp.de\/python\/xor\" target=\"_self\">Was ist XOR?<\/a>\t\t\t\t\t\t\t<\/h2>\n\t\t\t\t\t\t<div class=\"sp-pcp-post-meta\">\n\t\t\t<ul><li>\t\t\t\t\t<i class=\"fa fa-calendar\"><\/i>\n\t\t\t\t\t<time class=\"entry-date published updated\">16. November 2024<\/time>\n\t\t\t\t\t<\/li><\/ul>\t\t<\/div>\n\t\t\t\t\t<div class=\"sp-pcp-post-content\">\n\t\t\t<p>Entdecken Sie XOR: Die Rolle des Exklusiv-Oder-Operators in Logik, Verschl\u00fcsselung, Mathematik, KI und Technologie.<\/p>\n\t\t<div class=\"sp-pcp-readmore\">\n\t\t\t\t\t\t\t<a class=\"pcp-readmore-link\" target=\"_self\" href=\"https:\/\/databasecamp.de\/python\/xor\">\n\t\t\t\t\t\tWeiterlesen <\/a>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<span class=\"sp-pcp-pagination-data\" style=\"display:none;\"><\/span>\n\n\t\t<nav class=\"pcp-post-pagination pcp-on-desktop\">\n\t\t\t<span aria-current=\"page\" class=\"page-numbers current\">1<\/span><a class=\"page-numbers\" href=\"https:\/\/databasecamp.de\/wp-json\/wp\/v2\/posts\/8325\/?paged331=2\">2<\/a><a class=\"page-numbers\" href=\"https:\/\/databasecamp.de\/wp-json\/wp\/v2\/posts\/8325\/?paged331=3\">3<\/a><a class=\"next page-numbers\" href=\"https:\/\/databasecamp.de\/wp-json\/wp\/v2\/posts\/8325\/?paged331=2\"><i class=\"fa fa-angle-right\"><\/i><\/a>\t\t<\/nav>\n\t\t\t\t\t<nav class=\"pcp-post-pagination pcp-on-mobile\">\n\t\t\t<span aria-current=\"page\" class=\"page-numbers current\">1<\/span><a class=\"page-numbers\" href=\"https:\/\/databasecamp.de\/wp-json\/wp\/v2\/posts\/8325\/?paged331=2\">2<\/a><a class=\"page-numbers\" href=\"https:\/\/databasecamp.de\/wp-json\/wp\/v2\/posts\/8325\/?paged331=3\">3<\/a><a class=\"next page-numbers\" href=\"https:\/\/databasecamp.de\/wp-json\/wp\/v2\/posts\/8325\/?paged331=2\"><i class=\"fa fa-angle-right\"><\/i><\/a>\t\t<\/nav>\n\t\t\t\t<\/div>\n\n\n\n\n<h3 id='andere-beitr\u00e4ge-zum-thema-funktionen-in-python'  id=\"boomdevs_10\" class=\"wp-block-heading\" >Andere Beitr\u00e4ge zum Thema Funktionen in Python<\/h3>\n\n\n\n<p>Die Universit\u00e4t von Stanford hat einen interessanten <a href=\"https:\/\/cs.stanford.edu\/people\/nick\/py\/python-function.html\" target=\"_blank\" rel=\"noreferrer noopener\">Artikel<\/a> \u00fcber Funktionen in Python.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Beherrschen Sie Python-Funktionen: Lernen Sie, wie man Funktionen aufruft und effektiv einsetzt. Verbessern Sie Ihre Programmierkenntnisse!<\/p>\n","protected":false},"author":1,"featured_media":6719,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[25],"tags":[248,246],"class_list":["post-8325","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","tag-programmieren","tag-python"],"_links":{"self":[{"href":"https:\/\/databasecamp.de\/wp-json\/wp\/v2\/posts\/8325","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/databasecamp.de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/databasecamp.de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/databasecamp.de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/databasecamp.de\/wp-json\/wp\/v2\/comments?post=8325"}],"version-history":[{"count":12,"href":"https:\/\/databasecamp.de\/wp-json\/wp\/v2\/posts\/8325\/revisions"}],"predecessor-version":[{"id":11483,"href":"https:\/\/databasecamp.de\/wp-json\/wp\/v2\/posts\/8325\/revisions\/11483"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/databasecamp.de\/wp-json\/wp\/v2\/media\/6719"}],"wp:attachment":[{"href":"https:\/\/databasecamp.de\/wp-json\/wp\/v2\/media?parent=8325"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/databasecamp.de\/wp-json\/wp\/v2\/categories?post=8325"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/databasecamp.de\/wp-json\/wp\/v2\/tags?post=8325"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}