Ga naar hoofdinhoud

6.4 Matchen van cases

Python 3.10 introduceerde een alternatieve manier om meer-weg beslissingen te nemen, die je kunt gebruiken in een situatie waarbij je een expressie (meestal een variabele) moet testen op meerdere verschillende waardes. Je “matcht” de waarde van de expressie met verschillende “cases.” De syntax is als volgt:

match <expressie>:
case <waarde>:
<acties>
case <waarde>:
<acties>
case <waarde>:
<acties>
...
case other:
<acties>

Bijvoorbeeld, de code:

a = 2
match a:
case 1:
print ( "a is 1" )
case 2:
print ( "a is 2" )
case 3:
print ( "a is 3" )
case other :
print ( "a is niet 1, 2, of 3" )

is equivalent met:

a = 2
if a == 1:
print ( "a is 1" )
elif a == 2:
print ( "a is 2" )
elif a == 3:
print ( "a is 3" )
else :
print ( "a is niet 1, 2, of 3" )

De laatste case in het match statement is case other, waarvoor de acties die eronder staan worden uitgevoerd als geen van de andere cases “matcht.” case other is optioneel.

Hoewel deze aanpak minder flexibel is dan normale conditionele statements, biedt het de mogelijkheid om “wildcards” te gebruiken in complexe situaties. Het “wildcard” symbool is de “underscore” (_), die alle mogelijke waardes “matcht.” Het volgende voorbeeld maakt dit duidelijk:

x = 5
y = 0
match (x,y):
case (0 ,0):
print ( "x en y zijn allebei 0" )
case (0,_):
print ( "x is 0" )
case (_ ,0):
print ( "y is 0" )
case other:
print ( " noch x noch y is 0" )

Omdat de “underscore” iedere waarde “matcht,” kun je case other vervangen door case _.