
La versione 3.10 di Python introduce la struttura di controllo match case
- rende più leggibile la selezione multipla
- recupera la distanza da altri linguaggi che prevedono l’istruzione, anche se con altri nomi
- BASIC: select
- C: switch
- PASCAL: case
- rilancia con una sintassi molto più completa
1
match x:
case 1: ...
case 2: ...
case 3: ...
Un caso per ogni singolo valore di una variabile / espressione x
2
match x:
case 1: ...
case 2: ...
case other: ...
oppure
match x:
case 1: ...
case 2: ...
case _: ...
Un caso per ogni singolo valore di una variabile / espressione x e un caso per i valori non previsti
3
match x:
case 1 | 2: ...
case 3 | 4 | 5: ...
case _: ...
Un caso per uno o più valori di una variabile / espressione x
- 1 oppure 2
- 3 oppure 4 oppure 5
4
match x:
case 1: ...
case 2 if(...): ...
case _: ...
Con controllo (non è sufficiente il match con x, deve essere superato il test successivo)
5
match x:
case x if(...): ...
case x if(...): ...
case _: ...
Se il match con x è garantito… allora rimane da superare l’if
6
lista = [0,1,2,3,4,5]
match lista:
case [1 ,2, 3, 4]: print("1 2 3 4")
case [1, 2, *sub]: print("1 2 ...", sub)
case [*sub, 4, 5]: print(sub, "... 4 5")
case _: print('Altri casi')
Confronto tra liste (con asterisco…)
- Uguale a 1 2 3 4?
- Comincia con 1 2?
- Finisce con 4 5?
7
…