Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

Python #9: Funktionen

Posted on 13. Dezember 20181. Mai 2023 by Stefan Draeger

Funktionen sind ein wesentlicher Bestandteil der objektorientierten Programmierung (dazu folgt später ein separater Beitrag) und dienen unter anderem dazu den Quellcode zu strukturieren.

Nehmen wir folgenden Quellcode:

a = 1
b = 2
print(a+b)

a = 4
b = 6
print(a+b)

a = 8
b = 9
print(a+b)

In diesem Stück Code wird die Addition zweier Zahlen (a & b) ausgeführt.
Da ich hier jedoch mehrmals Addieren möchte, muss der Quellcode immer wiederholt werden. Diese Dopplung  von Code ist nicht sehr schön und macht den gesamten Quellcode schnell unübersichtlich und unnötig lang. Und genau hier können wir eine Funktion nutzen, um diesen Code zu vereinfachen.

Inhaltsverzeichnis

  • Wie erzeugt man eine Funktion?
    • Aufrufen einer Funktion
    • Definieren von Funktionsparameter
    • optionale Funktionsparameter
    • definieren unendlicher Funktionsparameter

Wie erzeugt man eine Funktion?

Eine Funktion erzeugt man mit dem Schlüsselwort „def“. Nach dem Schlüsselwort folgt ein Name für die Funktion und zusätzlich die runden Klammern gefolgt von einem Doppelpunkt.

def ein_funktionsname():

Als Funktionsname kann man eine beliebige Zeichenkette wählen, jedoch darf diese nicht mit einer Zahl beginnen. Macht man dieses trotzdem erhält man vom Interpreter folgende Fehlermeldung:

    def 1test():
        ^
SyntaxError: invalid syntax

Der Name einer Funktion sollte im Idealfall immer das Repräsentieren, was die Funktion macht, d.h. wenn in dieser Funktion eine Addition zweier oder mehrerer Zahlen durchgeführt wird so sollte diese dann mit „addition“ benannt werden.  Des Weiteren sollte eine Funktion genau eine Aufgabe übernehmen und wenn mehr zutun ist, kann man dieses ja in andere Funktionen auslagern. Auch solle eine Funktion nicht zu lang werden, als Richtwert nimmt man immer eine Bildschirmhöhe.

Als Erstes schreiben wir eine Funktion, welche uns mit dem Befehl „print“ mehrere Ausgaben auf der Konsole erzeugt.

def ausgabe():
    for i in range(0,10):
        print("Hallo Welt!")

Aufrufen einer Funktion

In den Beiträgen zuvor haben wir bereits Funktionen genutzt, Bsp. print, str, len usw. Unsere neue Funktion „ausgabe“ rufen wir nun wie folgt auf:

ausgabe()

Mit den Klammern „sagen“ wir dem Interpreter das wir die Funktion „ausgabe“ aufrufen möchten (andernfalls würde dieses als Variable erkannt).

def ausgabe():
    for i in range(0,10):
        print("Hallo Welt!")
    
ausgabe()

Wir erhalten also folgende Ausgabe:

Hallo Welt!
Hallo Welt!
Hallo Welt!
Hallo Welt!
Hallo Welt!
Hallo Welt!
Hallo Welt!
Hallo Welt!
Hallo Welt!
Hallo Welt!

Wichtig ist, dass die Definition der Funktion VOR dem Aufrufen der Funktion steht, ansonsten erhält man folgende Fehlermeldung:

NameError: name 'addition' is not defined

Dies bedeutet das der Interpreter den Namen der Funktion „addition“ zu dem Zeitpunkt wo die Zeile ausgeführt wird nicht kennt. Dieses liegt daran, dass die definition ja erst zum Schluss erfolgt.

Definieren von Funktionsparameter

Einer Funktion kann in den runden Klammern zusätzlich Funktionsparameter übergeben werden.

def ausgabe(text):
    for i in range(0,10):
        print(text)
    
ausgabe("Hallo Welt!")

Hier habe ich nun die Funktion angepasst nun ist diese noch vielseitiger zu verwenden da die Funktion „ausgabe“ nun mit mehreren Texten bedient werden kann.

ausgabe("Hallo Welt!")
ausgabe("Dies ist ein Text!")

Möchte man mehr als einen Funktionsparameter verwenden, so kann man diese mit einem Komma getrennt erstellen.

def eine_funktion(param1, param2, paramN):

Nun können wir unsere Additionsaufgaben vom Anfang erneut anschauen und wissen nun wie wir dieses verbessern können:

def addition(a,b):
    print(a+b)

addition(1,2) 
addition(4,6)
addition(8,9)

optionale Funktionsparameter

Nachdem wir nun eine Funktion mit einem oder mehreren Funktionsparametern definiert haben, wollen wir diese nun vorbelegen. Dieses sind dann die optionalen Funktionsparameter. Es ist bei der Verwendung von optionalen Funktionsparametern wichtig das diese NACH den nicht optionalen Funktionsparametern folgen.

def addition(a,b=1):

Macht man dieses nicht so erhält man die Fehlermeldung:

    def addition(a=1,b):
                ^
SyntaxError: non-default argument follows default argument

Möchte man also den Funktionsparameter „a“ vorbelegen so muss man diese beiden Funktionsparameter tauschen.

Das ergibt an der Funktion „addition“ jedoch wenig sinn.

Wenn wir Bsp. die mathematische Funktion des quadrieren (zbsp. 9²) nutzen wollen:

def quadriere(zahl, exponent):
    ergebnis = zahl
    for i in range(1, exponent):
        ergebnis = ergebnis * zahl
    print(ergebnis)
    

quadriere(9,2)

Als Ausgabe erhalten wir den Wert „81“. Jedoch können wir als Exponenten auch einen anderen Wert als „2“ wählen oder aber wir definieren, wenn kein Exponent angegeben wird, dann wird immer der Wert „2“ gesetzt.

def quadriere(zahl, exponent=2):

definieren unendlicher Funktionsparameter

Man kann auch unendlich viele Funktionsparameter definieren, dazu erzeugt man einen einfachen Parameter und setzt vor diesem ein Stern (*). Dieser Parameter wird dann auch Tupel-Referenz genannt und repräsentiert eine Liste.

def eineFunktion(a,b, *vielemehr):

Wenn wir nun die Funktion wiefolgt aufrufen würden:

eineFunktion("Dies", "ist", "ein", "Test", "mit", "ganz", "vielen", "Funktionsparametern!")

Dann haben wir den Funktionsparameter „a“ mit „Dies“ belegt sowie „b“ mit „ist“, die restlichen übergebenen Werte werden in einer Liste zusammen gefasst und können mit dem Index abgerufen werden.

def eineFunktion(a,b, *vielemehr):
    print(a,b, " ".join(vielemehr), sep=" ")
    
eineFunktion("Dies", "ist", "ein", "Test", "mit", "ganz", "vielen", "Funktionsparametern!")

1 thought on “Python #9: Funktionen”

  1. Pingback: Python #24 – Funktionsparameter - Technik Blog

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen
Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

link zu Fabook
link zu LinkedIn
link zu YouTube
link zu TikTok
link zu Pinterest
link zu Instagram
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}