Match case contructie

Op deze pagina:

Sinds Python 3.10 bestaat er een match-case constructie in Python.

Als voorbeeld het vertalen de HTTP-statuscode in foutmeldingen:


def http_status(status):
    match status:
        case 400:
            return "Bad request"
        case 401 | 403:
            return "Authentication error"
        case 404:
            return "Not found"
        case _:
            return "Other error"

De underscore '_' wordt gebruikt als default case voor alle gevallen die niet specifiek in het "case" blok zijn opgenomen.

Een "OR" in de vorm van een recht opstaande streep '|' wordt gebruikt in case 401 | 403 om aan te geven dat dit geldig is als de status 401 is of als de status 403 is.

Voor versie 3.10

Python had voor versie 3.10 geen ingebouwd case statement. Je kunt echter eenvoudig functies in een dictionary plaatsen waarmee je dan een case statement kunt nabootsen:


# de functies
def opdracht1():
    print('nummer1')
    print('***')

def opdracht2():
    print('nummer2')
    print('***')

def opdracht3():
    print('nummer3')
    print('***')

# de dictionary met de case statements
case = {1:opdracht1,
        2:opdracht2,
        3:opdracht3}

# keuze als case selector
keuze = 1
case[keuze]()

keuze = 3
case[keuze]()



# De uitvoer hiervan:
nummer1
***
nummer3
***

 

Verwante artikelen