8. Lektion: Funktionen

Aus Micropython Referenz
Zur Navigation springen Zur Suche springen

Micropython bringt von sich aus schon eine ganze Reihe Funktionen mit. Aber richtig anwendbar wird eine Programmiersprache erst, wenn man eigene Funktionen definieren kann. Das geht in Micropython natürlich.

Eine Funktion definieren[Bearbeiten | Quelltext bearbeiten]

‎>>> def funktionsname(parameter1, parameter2):
        pass‎

# oder mit Ellipsis:
>>> def my_func():
        ...

Parameter sind Werte die an die Funktion übergeben werden. Im Prinzip können beliebig viele Parameter übergeben werden. Bei der Definition einer Funktion werden die Namen der Parameter die in der Funktion verwendet werden eingetragen.
Beispiel:

>>> def erste_funktion(vorname, nachname):
        print('Hallo', vorname, nachname)

Eine Funktion benutzen[Bearbeiten | Quelltext bearbeiten]

>>> erste_funktion('Mickey', 'Mouse')
    Hallo Mickey Mouse
Übung[Bearbeiten | Quelltext bearbeiten]
  • Probiere das obige Beispiel selbst aus.
  • Entwickle 2 eigene Funktionen.

Rückgabe von Werten[Bearbeiten | Quelltext bearbeiten]

Eine Funktion gibt - wenn sie ihrem Namen gerecht wird - einen Wert zurück. Dazu dient das Schlüsselwort return:

def addiere(a, b):
    ergebnis = a + b
    return ergebnis

Es geht kürzer:

def addiere(a, b):
    return a + b

Anwendung[Bearbeiten | Quelltext bearbeiten]

x = addiere(3, 5)
print(x)

8

Mehrere Werte zurückgeben[Bearbeiten | Quelltext bearbeiten]

https://codefather-tech.medium.com/return-list-from-function-in-python-4-things-you-should-know-6e477cd8a302

Übung:[Bearbeiten | Quelltext bearbeiten]
  • Schreibe eine Funktion die 2 Werte subtrahiert.
  • Schreibe eine Funktion die die Fläche eines Kreises berechnet.
    • Fläche = d2 * pi / 4
    • pi = 3.14
  • Schreibe eine Funktion die als Eingabe eine Liste mit ganzen Zahlen erhält und die Quadrate der Zahlen ausdruckt.

Namensräume[Bearbeiten | Quelltext bearbeiten]

  • Ein Namensraum ist der Bereich in einem Programm in dem ein Name gilt.

globaler Namensraum[Bearbeiten | Quelltext bearbeiten]

  • Im Hauptprogramm angelegte Variablen- und Funktionsnamen gelten im gesamten Hauptprogramm und in Funktionen.
  • Wenn Module hinzugeladen werden, dann gelten die Namen die im Modul definiert werden nur im Modul (näheres dazu später in diesem Kurs).

lokaler Namensraum[Bearbeiten | Quelltext bearbeiten]

  • Namen, die in einer Funktion definiert werden gelten nur innerhalb dieser Funktion.
  • Globale Namen gelten auch in Funktionen,
  • Wenn eine Name sowohl lokal, als auch global existiert, so wird in der Funktion der lokale Name verwendet.
  • Wenn auf den globalen Namen zugegriffen werden soll, so ist das mit global Name bekannt zu machen.
  • Der lokale Name ist außerhalb der Funktion nicht bekannt.
  • Wenn die Funktion beendet wird, existiert auch der lokale Name nicht mehr.

Lokale und globale Variablen[Bearbeiten | Quelltext bearbeiten]

  • Variablen die im Hauptprogramm definiert werden sind überall bekannt.
  • Variablen die in einer Funktion definiert werden sind nur lokal - also innerhalb der Funktion - bekannt.
  • Wenn in einer Funktion in eine globale Variable geschrieben werden soll, so muss sie der Funktion mit global bekannt gemacht werden.
def prog_1(name):
    x = name

prog_1('Peter')
print(x)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'x' isn't defined

Nun mit globaler Variable x

x = None

def prog_2(name):
    global x
    x = name

prog_2('Peter')
print(x)

'Peter'

Globale Variablen sind in einer Funktion bekannt:

x = 'Peter'

def prog_3():
    print(x)
    
prog_3()
Peter
Übung:[Bearbeiten | Quelltext bearbeiten]
  • Schreibe ein paar kleine Funktionen und teste globale und lokale Variablen.
    • Hier ein Beispiel:
x = "Hallo I'm global"

def test1():
    print(x)
    
def test2():
    x = "Hallo I'm local"
    y = "I'm y and local"
    print(x)
    print(y)

def test3():
    global x
    print(x)
    
def test4():
    print(x)
    x = "I'm also local"
    print(x)

def test5():
    global x
    x = 'global x in test5 changed'
    print(x)

Navigation[Bearbeiten | Quelltext bearbeiten]

Zurück zu Micropython Kurs 2023 - Teil 1
Zurück zur "Micropython Kurs 2023" Startseite
Zurück zur Programmieren Startseite
Zurück zur Wiki Startseite