Python – Switch-Case-Statements

Mit dem frisch erschienen Python 3.10 wurde unter anderem Structural Pattern Matching eingeführt. Wie dies genutzt werden kann und was man vorher benutzt hat, zeige ich euch in diesem Artikel.

Man mag es kaum glauben, aber bisher gab es in Python keine Switch-Case-Statements.

Daher musste man sich anders behelfen.

vor 3.10

if-else

def get_week_day(argument):

    if argument == 0:
        return "Sunday"
    elif argument == 1:
        return "Monday"
    elif argument == 2:
        return "Tuesday"
    elif argument == 3:
        return "Wednesday"
    elif argument == 4:
        return "Thursday"
    elif argument == 5:
        return "Friday"
    elif argument == 6:
        return "Saturday"
    else:
        return "Invalid day"

if __name__ == "__main__":
    print (get_week_day(6))
    print (get_week_day(8))
    print (get_week_day(0))

Dictionary

def get_week_day(argument):

    switcher = {
        0: "Sunday",
        1: "Monday",
        2: "Tuesday",
        3: "Wednesday",
        4: "Thursday",
        5: "Friday",
        6: "Saturday"
    }

    return switcher.get(argument, "Invalid day")

if __name__ == "__main__":
    print (get_week_day(6))
    print (get_week_day(8))
    print (get_week_day(0))

mit 3.10

Match

def get_week_day(argument):

    match argument:
        case 0:
            return "Sunday"
        case 1:
            return "Monday"
        case 2:
            return "Tuesday"
        case 3:
            return "Wednesday"
        case 4:
            return "Thursday"
        case 5:
            return "Friday"
        case 6:
            return "Saturday"
        case _:
            return "Invalid day"

if __name__ == "__main__":
    print (get_week_day(6))
    print (get_week_day(8))
    print (get_week_day(0))

Fazit

Für einfache Statements finde ich nach wie vor die Dictionary Variante die optimalste, da diese sehr kurz gehalten und übersichtlich ist.

Mit Match kann man hingegen sehr komplexe und gemischte Statements abbilden, daher empfinde ich Match als sinnvollen Einzug.

Quelle: https://docs.python.org/3.10/whatsnew/3.10.html

Die Verbindung zum Internet wurde unterbrochen.