· 

Schalterblöcke in Python

1. Einführung

In vielen Sprachen werden sogenannte Schalterblöcke bzw. Switch-Case-Statements dazu genutzt, um lange if-else-Verschachtelungen durch eleganteren Code zu ersetzen. Man prüft den Wert einer bestimmten Variable und definiert sogenannte Cases (also Fälle), in denen dann ein bestimmtes Codestück ausgeführt wird.


2. Implementierung

Python bietet diese Funktionalität nicht von Haus aus. Man kann sie aber mit einem Dictionary nachahmen. Definiere eine Funktion switch, der du einen value übergibst, auf den du prüfen willst.

def switch(value):

Nun folgt das return-Statement, hinter dem du das Dicionary mit den Werten definierst, z. B. die Namen der Zahlen 1 bis 5 als String erhalten und dann den dahinterstehenden Integer-Wert zurückgeben:

def switch(value):
   return {
      "one" :   1,
      "two" :   2,
      "three" : 3,
      "four" :  4,
      "five" :  5
        }

Greife mit der Funktion get der Dictionary-Klasse, der du den value übergibst, auf die Elemente im Dictionary zu. Dahinter kannst du einen Default-Wert zurückgeben, wenn jemand versucht, auf ein Element zuzugreifen, dass es nicht im Dictionary gibt. Dies entspricht dem Default-Case in einem Switch-Case-Statement. Hier wird als Default-Wert einfach 42 zurückgegeben:

def switch(value):
   return {
      "one" :   1,
      "two" :   2,
      "three" : 3,
      "four" :  4,
      "five" :  5
        }.get(value, 42)

Der Aufruf switch("three") liefert 3 zurück.

print(switch("three"))

Wenn Performance eine Rolle spielt, z. B. weil die Funktion switch sehr häufig aufgerufen werden muss, solltest du das Dictionary außerhalb der Funktion definieren, damit es nicht mit jedem Aufruf neu erzeugt werden muss. Das ist gerade bei großen Dictionaries lästig. Dieses rufst du dann innerhalb der Funktion wie zuvor auf.

dict = {
      "one" :   1,
      "two" :   2,
      "three" : 3,
      "four" :  4,
      "five" :  5
        }

def switch(value):
   return dict.get(value, 42)