Funktionale Programmierung

https://docs.python.org/3/howto/functional.html

Anonyme Funktion (lambda)

  • Lambda-Funktionen werden oft als annonyme Funktionen verwendet, benötigen also keinen Funktionsnamen
  • enthalten ein explizites return

1. Beispiel

up = lambda text: text.upper()
up("Lina Koppatz")
'LINA KOPPATZ'
# die klassische Schreibweise
def up(name):
    return name.upper()
up('Oswald Koppatz')
'OSWALD KOPPATZ'

2. Beispiel

(lambda x, y: x * y)(5, 5)
25
# die klassische Schreibweise
def multiplikation(x, y):
    return x * y
multiplikation(5, 5)
25

Die folgende Funktion ändert die Liste, was zu Seiteneffekten führt.

def remove_last_item(mylist):
    """Removes the last item from a list."""
    mylist.pop(-1)  # ändert das Original

Die gleiche Funktion als funktionale Variante - ich erhalte eine neue Liste zurück die alte bleibt unverändert

def butlast(mylist):
    """Like butlast in Lisp; gibt eine Kopie ohne das letzte Element zurück."""
    return mylist[:-1]  # gibt eine Kopie zurück

Map

map(function, iterable) - wendet die Funktion im ersten Parameter, auf jedes Element des “Iterable” im zweiten Parameter an.

list(map(lambda x: x + " mag ich !", ["Python ", "Linux", "Java"]))
['Python  mag ich !', 'Linux mag ich !', 'Java mag ich !']
# Listcomprehesion
[x + " ok..." for x in ["Ich denke" , "Weil ich denk, denke ich,"]]
['Ich denke ok...', 'Weil ich denk, denke ich, ok...']

Filter:

filter(function or None, iterable)

list(filter(lambda x: x.startswith("192"), ["125.234.456.23", "192.168.1.1"]))
['192.168.1.1']
[x for x in ["I think", "I'm good"] if x.startswith("I ")]
['I think']

Enumerate

meineListe = ['Herr', 'Frau', 'Süße', 'Süßer', 'Alter']

# alte Variante
i = 0
while i < len(meineListe):
    print("Index + Wert %d: %s" % (i, meineListe[i]))
    i += 1

# modernere Variante...

for i, item in enumerate(meineListe):
    print(f"Listen-Wert {i}: {item}")
Index + Wert 0: Herr
Index + Wert 1: Frau
Index + Wert 2: Süße
Index + Wert 3: Süßer
Index + Wert 4: Alter
Listen-Wert 0: Herr
Listen-Wert 1: Frau
Listen-Wert 2: Süße
Listen-Wert 3: Süßer
Listen-Wert 4: Alter