Direkt zum Inhalt
HeimAnleitungenPython

Python Functions Tutorial

Ein Tutorial über Funktionen in Python, in dem du lernst, wie man Funktionen schreibt, wie man sie aufruft und vieles mehr!
Aktualisierte 11. Sept. 2024  · 14 Min. lesen
Python-Kenntnisse für die Karriere mit dem Datacamp-Banner

Funktionen sind ein wesentlicher Bestandteil der Programmiersprache Python: Vielleicht hast du schon einige der vielen fantastischen Funktionen kennengelernt und genutzt, die in Python eingebaut sind oder aus dem Ökosystem der Bibliothek stammen. Als Data Scientist wirst du jedoch ständig eigene Funktionen schreiben müssen, um Probleme zu lösen, die dir deine Daten stellen.

Um den Beispielcode in diesem Lernprogramm ganz einfach selbst auszuführen, kannst du eine kostenlose DataLab-Arbeitsmappe erstellen, auf der Python vorinstalliert ist und die alle Codebeispiele enthält. Wenn du mehr Übung im Schreiben von Python-Funktionen brauchst, schau dir diese praktische DataCamp-Übung an oder probiere unseren Python Data Science Toolbox-Kurs aus!

Funktionen in Python

In der Programmierung verwendest du Funktionen, um eine Reihe von Anweisungen zu bündeln, die du wiederholt verwenden möchtest oder die aufgrund ihrer Komplexität besser in einem Unterprogramm untergebracht und bei Bedarf aufgerufen werden sollten. Das bedeutet, dass eine Funktion ein Stück Code ist, das geschrieben wurde, um eine bestimmte Aufgabe auszuführen. Um diese spezielle Aufgabe zu erfüllen, kann die Funktion mehrere Eingaben benötigen, muss es aber nicht. Wenn die Aufgabe ausgeführt wird, kann die Funktion einen oder mehrere Werte zurückgeben oder nicht.

In Python gibt es drei Arten von Funktionen:

  • Eingebaute Funktionen wie help(), um um Hilfe zu bitten, min(), um den Mindestwert zu ermitteln, print(), um ein Objekt auf dem Terminal auszudrucken,... Eine Übersicht mit weiteren dieser Funktionen findest du hier.
  • Benutzerdefinierte Funktionen (User-Defined Functions, UDFs), d.h. Funktionen, die von den Benutzern erstellt werden, um ihnen zu helfen; und
  • Anonyme Funktionen, die auch Lambda-Funktionen genannt werden, weil sie nicht mit dem Standardschlüsselwort def deklariert werden.

Funktionen vs. Methoden

Eine Methode bezieht sich auf eine Funktion, die Teil einer Klasse ist. Du greifst auf sie mit einer Instanz oder einem Objekt der Klasse zu. Eine Funktion hat diese Einschränkung nicht: Sie verweist einfach auf eine eigenständige Funktion. Das bedeutet, dass alle Methoden Funktionen sind, aber nicht alle Funktionen sind Methoden.

In diesem Beispiel definierst du zuerst eine Funktion plus() und dann eine Klasse Summation mit einer Methode sum():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGEgZnVuY3Rpb24gYHBsdXMoKWBcbmRlZiBwbHVzKGEsYik6XG4gIHJldHVybiBhICsgYlxuICBcbiMgQ3JlYXRlIGEgYFN1bW1hdGlvbmAgY2xhc3NcbmNsYXNzIFN1bW1hdGlvbihvYmplY3QpOlxuICBkZWYgc3VtKHNlbGYsIGEsIGIpOlxuICAgIHNlbGYuY29udGVudHMgPSBhICsgYlxuICAgIHJldHVybiBzZWxmLmNvbnRlbnRzICJ9

Wenn du nun die Methode sum() aufrufen willst, die Teil der Klasse Summation ist, musst du zunächst eine Instanz oder ein Objekt dieser Klasse definieren. Definieren wir also ein solches Objekt:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIHBsdXMoYSxiKTpcbiAgcmV0dXJuIGEgKyBiXG4gIFxuY2xhc3MgU3VtbWF0aW9uKG9iamVjdCk6XG4gIGRlZiBzdW0oc2VsZiwgYSwgYik6XG4gICAgc2VsZi5jb250ZW50cyA9IGEgKyBiXG4gICAgcmV0dXJuIHNlbGYuY29udGVudHMgIiwic2FtcGxlIjoiIyBJbnN0YW50aWF0ZSBgU3VtbWF0aW9uYCBjbGFzcyB0byBjYWxsIGBzdW0oKWBcbnN1bUluc3RhbmNlID0gU3VtbWF0aW9uKClcbnN1bUluc3RhbmNlLnN1bSgxLDIpIn0=

Denke daran, dass diese Instanziierung nicht notwendig ist, wenn du die Funktion plus() aufrufen willst! Du könntest plus(1,2) ohne Probleme im DataCamp Light Code Chunk ausführen!

Parameter vs. Argumente

Parameter sind die Namen, die bei der Definition einer Funktion oder einer Methode verwendet werden und auf die Argumente abgebildet werden. Mit anderen Worten: Argumente sind die Dinge, die einem Funktions- oder Methodenaufruf übergeben werden, während sich der Funktions- oder Methodencode auf die Argumente durch ihre Parameternamen bezieht.

Betrachte das folgende Beispiel und schaue auf den obigen DataCamp Light Chunk zurück: Du übergibst zwei Argumente an die Methode sum() der Klasse Summation, obwohl du zuvor drei Parameter definiert hast, nämlich self, a und b.

Was ist mit self passiert?

Das erste Argument jeder Klassenmethode ist immer ein Verweis auf die aktuelle Instanz der Klasse, die in diesem Fall Summation ist. Konventionell wird dieses Argument self genannt.

Das alles bedeutet, dass du in diesem Fall den Verweis auf self nicht übergibst, denn self ist der Parametername für ein implizit übergebenes Argument, das sich auf die Instanz bezieht, durch die eine Methode aufgerufen wird. Sie wird implizit in die Argumentliste eingefügt.

So definierst du eine Funktion: Benutzerdefinierte Funktionen (UDFs)

Die vier Schritte zur Definition einer Funktion in Python sind die folgenden:

  1. Verwende das Schlüsselwort def, um die Funktion zu deklarieren und gib anschließend den Funktionsnamen an.
  2. Füge der Funktion Parameter hinzu: Sie sollten innerhalb der Klammern der Funktion stehen. Beende deine Zeile mit einem Doppelpunkt.
  3. Füge Anweisungen hinzu, die die Funktionen ausführen sollen.
  4. Beende deine Funktion mit einer Return-Anweisung, wenn die Funktion etwas ausgeben soll. Ohne die Return-Anweisung gibt deine Funktion ein Objekt None zurück.
eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsbygpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpIFxuICByZXR1cm4gIn0=

Natürlich werden deine Funktionen im Laufe der Zeit immer komplexer: Du kannst for-Schleifen, Flusskontrolle und vieles mehr hinzufügen, um sie noch feiner zu gestalten:

def hello():
  name = str(input("Enter your name: "))
  if name:
    print ("Hello " + str(name))
  else:
    print("Hello World") 
  return 
  
hello()

In der obigen Funktion forderst du den Benutzer auf, einen Namen anzugeben. Wenn kein Name angegeben wird, gibt die Funktion "Hello World" aus. Andernfalls erhält der Nutzer eine personalisierte "Hallo"-Antwort.

Denke auch daran, dass du einen oder mehrere Funktionsparameter für deine UDF definieren kannst. Mehr darüber erfährst du, wenn du den Abschnitt Funktionsargumente behandelst. Außerdem kannst du einen oder mehrere Werte als Ergebnis deiner Funktion zurückgeben oder nicht.

Python von Grund auf lernen

Beherrsche Python für Data Science und erwerbe gefragte Fähigkeiten.
Kostenloses Lernen Beginnen

Die return Erklärung

Da du etwas in deiner UDF hello() ausdruckst, musst du es nicht unbedingt zurückgeben. Es gibt keinen Unterschied zwischen der obigen Funktion und dieser hier:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsb19ub3JldHVybigpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpICJ9

Wenn du jedoch mit dem Ergebnis deiner Funktion weiterarbeiten und einige Operationen damit ausprobieren möchtest, musst du die Anweisung return verwenden, um tatsächlich einen Wert zurückzugeben, z. B. einen String, eine ganze Zahl, .... Betrachte das folgende Szenario, in dem hello() einen String "hello" zurückgibt, während die Funktion hello_noreturn() None zurückgibt:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBoZWxsbygpOlxuICBwcmludChcIkhlbGxvIFdvcmxkXCIpIFxuICByZXR1cm4oXCJoZWxsb1wiKVxuXG5kZWYgaGVsbG9fbm9yZXR1cm4oKTpcbiAgcHJpbnQoXCJIZWxsbyBXb3JsZFwiKVxuICBcbiMgTXVsdGlwbHkgdGhlIG91dHB1dCBvZiBgaGVsbG8oKWAgd2l0aCAyIFxuaGVsbG8oKSAqIDJcblxuIyAoVHJ5IHRvKSBtdWx0aXBseSB0aGUgb3V0cHV0IG9mIGBoZWxsb19ub3JldHVybigpYCB3aXRoIDIgXG5oZWxsb19ub3JldHVybigpICogMiJ9

Bei der zweiten Funktion bekommst du einen Fehler, weil du keine Operationen mit None durchführen kannst. Du bekommst eine TypeError, die besagt, dass du die Multiplikationsoperation für NoneType (das None, das das Ergebnis von hello_noreturn() ist) und int (2) nicht durchführen kannst.

Tip-Funktionen werden sofort beendet, wenn sie auf eine return Anweisung stoßen, auch wenn das bedeutet, dass sie keinen Wert zurückgeben:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRlZiBydW4oKTpcbiAgZm9yIHggaW4gcmFuZ2UoMTApOlxuICAgICBpZiB4ID09IDI6XG4gICAgcmV0dXJuXG4gIHByaW50KFwiUnVuIVwiKVxuICBcbnJ1bigpIn0=

Ein weiterer erwähnenswerter Aspekt bei der Arbeit mit der return Anweisung ist die Tatsache, dass du damit mehrere Werte zurückgeben kannst. Dazu verwendest du Tupel.

Denke daran, dass diese Datenstruktur der einer Liste sehr ähnlich ist: Sie kann mehrere Werte enthalten. Tupel sind jedoch unveränderlich, was bedeutet, dass du die darin gespeicherten Beträge nicht ändern kannst! Du konstruierst sie mit Hilfe der doppelten Klammern (). Du kannst Tupel mit Hilfe des Kommas und des Zuweisungsoperators in mehrere Variablen entpacken.

Schau dir das folgende Beispiel an, um zu verstehen, wie deine Funktion mehrere Werte zurückgeben kann:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgXG5kZWYgcGx1cyhhLGIpOlxuICBzdW0gPSBhICsgYlxuICByZXR1cm4gKHN1bSwgYSlcblxuIyBDYWxsIGBwbHVzKClgIGFuZCB1bnBhY2sgdmFyaWFibGVzIFxuc3VtLCBhID0gcGx1cygzLDQpXG5cbiMgUHJpbnQgYHN1bSgpYFxucHJpbnQoc3VtKSJ9

Beachte, dass die Anweisung return return sum, a das gleiche Ergebnis wie return (sum, a) hätte: Erstere packt sum und a tatsächlich in ein Tupel unter der Haube!

Wie man eine Funktion aufruft

In den vorherigen Abschnitten hast du bereits viele Beispiele gesehen, wie du eine Funktion aufrufen kannst. Der Aufruf einer Funktion bedeutet, dass du die von dir definierte Funktion ausführst - entweder direkt in der Python-Eingabeaufforderung oder über eine andere Funktion (wie du im Abschnitt "Verschachtelte Funktionen" sehen wirst).

Rufe deine neu definierte Funktion hello() auf, indem du einfach hello() ausführst, genau wie in dem DataCamp Light Chunk unten:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiJoZWxsbygpIn0=

Wie man Docstrings zu einer Python-Funktion hinzufügt

Ein weiterer wichtiger Aspekt beim Schreiben von Funktionen in Python: Docstrings. Docstrings beschreiben, was deine Funktion tut, z. B. die Berechnungen, die sie durchführt, oder ihre Rückgabewerte. Diese Beschreibungen dienen als Dokumentation für deine Funktion, so dass jeder, der den Docstring deiner Funktion liest, versteht, was deine Funktion tut, ohne den gesamten Code in der Funktionsdefinition durchgehen zu müssen.

Funktions-Docstrings stehen in der unmittelbaren Zeile nach dem Funktionskopf und werden zwischen dreifachen Anführungszeichen platziert. Ein geeigneter Docstring für deine hello() Funktion ist 'Druckt "Hallo Welt"'.

def hello():
"""Prints "Hello World".

Returns:
    None
"""
  print("Hello World") 
  return 

Beachte, dass Docstrings länger sein können als der hier als Beispiel angegebene. Wenn du dich eingehender mit docstrings beschäftigen möchtest, solltest du dir einige Github-Repositories von Python-Bibliotheken wie scikit-learn oder pandas ansehen, wo du viele Beispiele findest!

Funktionsargumente in Python

Vorhin hast du den Unterschied zwischen Parametern und Argumenten kennengelernt. Kurz gesagt, sind Argumente die Dinge, die einem Funktions- oder Methodenaufruf übergeben werden, während sich der Funktions- oder Methodencode auf die Argumente durch ihre Parameternamen bezieht. Es gibt vier Arten von Argumenten, die Python UDFs annehmen können:

  • Standard-Argumente
  • Erforderliche Argumente
  • Schlüsselwort-Argumente
  • Variable Anzahl von Argumenten

Standard-Argumente

Standardargumente sind diejenigen, die einen Standardwert annehmen, wenn während des Funktionsaufrufs kein Argumentwert übergeben wird. Du kannst diesen Standardwert mit dem Zuweisungsoperator = zuweisen, so wie im folgenden Beispiel:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIgPSAyKTpcbiAgcmV0dXJuIGEgKyBiXG4gIFxuIyBDYWxsIGBwbHVzKClgIHdpdGggb25seSBgYWAgcGFyYW1ldGVyXG5wbHVzKGE9MSlcblxuIyBDYWxsIGBwbHVzKClgIHdpdGggYGFgIGFuZCBgYmAgcGFyYW1ldGVyc1xucGx1cyhhPTEsIGI9MykifQ==

Erforderliche Argumente

Wie der Name schon verrät, sind die erforderlichen Argumente einer UDF diejenigen, die dort enthalten sein müssen. Diese Argumente müssen während des Funktionsaufrufs und in genau der richtigen Reihenfolge übergeben werden, so wie im folgenden Beispiel:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIHdpdGggcmVxdWlyZWQgYXJndW1lbnRzXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGIifQ==

Du brauchst Argumente, die sowohl den a als auch den b Parametern entsprechen, um die Funktion ohne Fehler aufrufen zu können. Wenn du a und b vertauschst, wird das Ergebnis nicht anders ausfallen, aber vielleicht schon, wenn du plus() wie folgt änderst:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIHdpdGggcmVxdWlyZWQgYXJndW1lbnRzXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYS9iIn0=

Schlüsselwort-Argumente

Wenn du sicherstellen willst, dass du alle Parameter in der richtigen Reihenfolge aufrufst, kannst du das Schlüsselwort arguments in deinem Funktionsaufruf verwenden. Du verwendest diese, um die Argumente durch ihren Parameternamen zu identifizieren. Nehmen wir das Beispiel von oben, um das etwas zu verdeutlichen:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGJcbiAgXG4jIENhbGwgYHBsdXMoKWAgZnVuY3Rpb24gd2l0aCBwYXJhbWV0ZXJzIFxucGx1cygyLDMpXG5cbiMgQ2FsbCBgcGx1cygpYCBmdW5jdGlvbiB3aXRoIGtleXdvcmQgYXJndW1lbnRzXG5wbHVzKGE9MSwgYj0yKSJ9

Beachte, dass du mit den Schlüsselwörtern Argumente auch die Reihenfolge der Parameter vertauschen kannst und trotzdem das gleiche Ergebnis erhältst, wenn du deine Funktion ausführst:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uXG5kZWYgcGx1cyhhLGIpOlxuICByZXR1cm4gYSArIGJcbiAgXG4jIENhbGwgYHBsdXMoKWAgZnVuY3Rpb24gd2l0aCBrZXl3b3JkIGFyZ3VtZW50c1xucGx1cyhiPTIsIGE9MSkifQ==

Variable Anzahl von Argumenten

In Fällen, in denen du die genaue Anzahl der Argumente, die du einer Funktion übergeben willst, nicht kennst, kannst du die folgende Syntax mit *args verwenden:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uIHRvIGFjY2VwdCBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHNcbmRlZiBwbHVzKCphcmdzKTpcbiAgcmV0dXJuIHN1bShhcmdzKVxuXG4jIENhbGN1bGF0ZSB0aGUgc3VtXG5wbHVzKDEsNCw1KSJ9

Das Sternchen (*) wird vor den Variablennamen gesetzt, der die Werte aller Nicht-Schlüsselwort-Variablenargumente enthält. Beachte hier, dass du genauso gut *varint, *var_int_args oder einen anderen Namen an die Funktion plus() hättest übergeben können.

Tipp: Versuche, *args durch einen anderen Namen zu ersetzen, der das Sternchen enthält. Du wirst sehen, dass der obige Code weiterhin funktioniert!

Du siehst, dass die obige Funktion die eingebaute Python-Funktion sum() nutzt, um alle Argumente zu summieren, die an plus() übergeben werden. Wenn du dies vermeiden und die Funktion komplett selbst erstellen möchtest, kannst du diese Alternative verwenden:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgRGVmaW5lIGBwbHVzKClgIGZ1bmN0aW9uIHRvIGFjY2VwdCBhIHZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHNcbmRlZiBwbHVzKCphcmdzKTpcbiAgdG90YWwgPSAwXG4gIGZvciBpIGluIGFyZ3M6XG4gICAgdG90YWwgKz0gaVxuICByZXR1cm4gdG90YWxcblxuIyBDYWxjdWxhdGUgdGhlIHN1bSAgXG5wbHVzKDIwLDMwLDQwLDUwKSJ9

Globale vs. lokale Variablen

Im Allgemeinen haben Variablen, die innerhalb eines Funktionskörpers definiert sind, einen lokalen Geltungsbereich, während Variablen, die außerhalb definiert sind, einen globalen Geltungsbereich haben. Das bedeutet, dass lokale Variablen innerhalb eines Funktionsblocks definiert sind und nur innerhalb dieser Funktion aufgerufen werden können, während globale Variablen von allen Funktionen in deinem Skript aufgerufen werden können:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgR2xvYmFsIHZhcmlhYmxlIGBpbml0YFxuaW5pdCA9IDFcblxuIyBEZWZpbmUgYHBsdXMoKWAgZnVuY3Rpb24gdG8gYWNjZXB0IGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50c1xuZGVmIHBsdXMoKmFyZ3MpOlxuICAjIExvY2FsIHZhcmlhYmxlIGBzdW0oKWBcbiAgdG90YWwgPSAwXG4gIGZvciBpIGluIGFyZ3M6XG4gICAgdG90YWwgKz0gaVxuICByZXR1cm4gdG90YWxcbiAgXG4jIEFjY2VzcyB0aGUgZ2xvYmFsIHZhcmlhYmxlXG5wcmludChcInRoaXMgaXMgdGhlIGluaXRpYWxpemVkIHZhbHVlIFwiICsgc3RyKGluaXQpKVxuXG4jIChUcnkgdG8pIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVcbnByaW50KFwidGhpcyBpcyB0aGUgc3VtIFwiICsgc3RyKHRvdGFsKSkifQ==

Du wirst sehen, dass du eine NameError bekommst, die besagt, dass die name 'total' is not defined, wenn du versuchst, die lokale Variable total auszudrucken, die innerhalb des Funktionskörpers definiert wurde. Die Variable init hingegen kann problemlos ausgedruckt werden.

Anonyme Funktionen in Python

Anonyme Funktionen werden in Python auch Lambda-Funktionen genannt, denn anstatt sie mit dem Standardschlüsselwort def zu deklarieren, verwendest du das Schlüsselwort lambda.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImRvdWJsZSA9IGxhbWJkYSB4OiB4KjJcblxuZG91YmxlKDUpIn0=

In dem obigen DataCamp Light Chunk ist lambda x: x*2 die anonyme oder Lambda-Funktion. x ist das Argument und x*2 ist der Ausdruck oder die Anweisung, die ausgewertet und zurückgegeben wird. Das Besondere an dieser Funktion ist, dass sie keinen Namen hat, wie die Beispiele, die du im ersten Teil dieses Funktions-Tutorials gesehen hast. Wenn du die obige Funktion in eine UDF schreiben müsstest, würde das Ergebnis folgendermaßen aussehen:

def double(x):
  return x*2

Betrachten wir ein weiteres Beispiel für eine Lambda-Funktion, bei der du mit zwei Argumenten arbeitest:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgYHN1bSgpYCBsYW1iZGEgZnVuY3Rpb25cbnN1bSA9IGxhbWJkYSB4LCB5OiB4ICsgeTtcblxuIyBDYWxsIHRoZSBgc3VtKClgIGFub255bW91cyBmdW5jdGlvblxuc3VtKDQsNSlcblxuIyBcIlRyYW5zbGF0ZVwiIHRvIGEgVURGXG5kZWYgc3VtKHgsIHkpOlxuICByZXR1cm4geCt5In0=

Du verwendest anonyme Funktionen, wenn du für einen kurzen Zeitraum eine namenlose Funktion benötigst, die zur Laufzeit erstellt wird. In bestimmten Kontexten ist dies relevant, wenn du mit filter(), map() und reduce() arbeitest:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImZyb20gZnVuY3Rvb2xzIGltcG9ydCByZWR1Y2VcblxubXlfbGlzdCA9IFsxLDIsMyw0LDUsNiw3LDgsOSwxMF1cblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYGZpbHRlcigpYFxuZmlsdGVyZWRfbGlzdCA9IGxpc3QoZmlsdGVyKGxhbWJkYSB4OiAoeCoyID4gMTApLCBteV9saXN0KSlcblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYG1hcCgpYFxubWFwcGVkX2xpc3QgPSBsaXN0KG1hcChsYW1iZGEgeDogeCoyLCBteV9saXN0KSlcblxuIyBVc2UgbGFtYmRhIGZ1bmN0aW9uIHdpdGggYHJlZHVjZSgpYFxucmVkdWNlZF9saXN0ID0gcmVkdWNlKGxhbWJkYSB4LCB5OiB4K3ksIG15X2xpc3QpXG5cbnByaW50KGZpbHRlcmVkX2xpc3QpXG5wcmludChtYXBwZWRfbGlzdClcbnByaW50KHJlZHVjZWRfbGlzdCkifQ==

Die Funktion filter() filtert, wie der Name schon sagt, die ursprüngliche Eingabeliste my_list auf der Grundlage eines Kriteriums >10. Mit map() wendest du dagegen eine Funktion auf alle Elemente der Liste my_list an. In diesem Fall multiplizierst du alle Elemente mit 2.

Beachte, dass die Funktion reduce() Teil der Bibliothek functools ist. Du wendest diese Funktion kumulativ auf die Elemente der Liste my_list an, von links nach rechts, und reduzierst die Folge auf einen einzigen Wert, in diesem Fall 55.

Mit main() als Funktion

Wenn du Erfahrung mit anderen Programmiersprachen wie Java hast, wirst du wissen, dass die Funktion main benötigt wird, um Funktionen auszuführen. Wie du in den Beispielen oben gesehen hast, ist das für Python nicht unbedingt nötig. Es kann jedoch praktisch sein, eine main() Funktion in dein Python-Programm einzubauen, um deinen Code logisch zu strukturieren - alle wichtigen Komponenten sind in dieser main() Funktion enthalten.

Du kannst ganz einfach eine main() Funktion definieren und sie genauso aufrufen, wie du es mit allen anderen Funktionen oben getan hast:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiIjIERlZmluZSBgbWFpbigpYCBmdW5jdGlvblxuZGVmIG1haW4oKTpcbiAgaGVsbG8oKVxuICBwcmludChcIlRoaXMgaXMgYSBtYWluIGZ1bmN0aW9uXCIpXG5cbm1haW4oKSJ9

So wie es jetzt aussieht, wird der Code deiner main() Funktion jedoch aufgerufen, wenn du sie als Modul importierst. Damit das nicht passiert, rufst du die Funktion main() auf, wenn du __name__ == '__main__' aufrufst.

Das bedeutet, dass der Code des obigen Codeabschnitts zu:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiZGVmIGhlbGxvKCk6XG4gIHByaW50KFwiSGVsbG8gV29ybGRcIikgXG4gIHJldHVybiAiLCJzYW1wbGUiOiIjIERlZmluZSBgbWFpbigpYCBmdW5jdGlvblxuZGVmIG1haW4oKTpcbiAgaGVsbG8oKVxuICBwcmludChcIlRoaXMgaXMgYSBtYWluIGZ1bmN0aW9uXCIpXG4gIFxuIyBFeGVjdXRlIGBtYWluKClgIGZ1bmN0aW9uIFxuaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzpcbiAgICBtYWluKCkifQ==

Beachte, dass du neben der Funktion __main__ auch eine Funktion __init__ hast, die eine Instanz einer Klasse oder eines Objekts initialisiert. Einfach gesagt, fungiert er als Konstruktor oder Initialisierer und wird automatisch aufgerufen, wenn du eine neue Instanz einer Klasse erstellst. Mit dieser Funktion wird das neu erstellte Objekt dem Parameter self zugewiesen, den du weiter oben in diesem Lernprogramm gesehen hast. Sieh dir das folgende Beispiel an:

class Dog:
    """    
    Requires:
    legs - Legs so that the dog can walk.
    color - A color of the fur.
    """

    def __init__(self, legs, color):
        self.legs = legs
        self.color = color
        
    def bark(self):
        bark = "bark" * 2
        return bark

if __name__ == "__main__":
    dog = Dog(4, "brown")
    bark = dog.bark()
    print(bark)

Willst du weiter üben?

Herzlichen Glückwunsch! Du hast es durch dieses kurze Tutorial über Funktionen in Python geschafft. Wenn du weitere Grundlagen der Python-Programmierung auffrischen möchtest, solltest du dir den Kurs Datentypen für die Datenwissenschaft nicht entgehen lassen, in dem du dein Wissen über Listen, Wörterbücher, Tupel, Mengen und Datumsangaben festigen und üben kannst.

Lass dich für deine Traumrolle als Data Scientist zertifizieren

Unsere Zertifizierungsprogramme helfen dir, dich von anderen abzuheben und potenziellen Arbeitgebern zu beweisen, dass deine Fähigkeiten für den Job geeignet sind.

Hol Dir Deine Zertifizierung
Timeline mobile.png
Themen

Erfahre mehr über Python

Zertifizierung verfügbar

Course

Funktionen in Python schreiben

4 hr
86.1K
Lerne, Best Practices anzuwenden, um wartbare, wiederverwendbare, komplexe Funktionen mit guter Dokumentation zu schreiben.
See DetailsRight Arrow
Start Course
Mehr anzeigenRight Arrow