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
- BASIC: select
- C: switch
- PASCAL: case
- rilancia con una sintassi molto più completa
Sintassi 1
Un caso per ogni singolo valore di una variabile / espressione x
1 2 3 4 5 6 7 |
match x: case 1: ... case 2: ... case 3: ... |
Sintassi 2
Un caso per ogni singolo valore di una variabile / espressione x e un caso per i valori non previsti
1 2 3 4 5 6 7 |
match x: case 1: ... case 2: ... case other: ... |
oppure
1 2 3 4 5 6 7 |
match x: case 1: ... case 2: ... case _: ... |
Sintassi 3
Un caso per uno o più valori di una variabile / espressione x
1 2 3 4 5 6 7 |
match x: case 1 | 2: # 1 oppure 2 ... case 3 | 4 | 5: # 3 oppure 4 oppure 5 ... case _: ... |
Sintassi 4
Con controllo (non è sufficiente il match con x, deve essere superato il test successivo)
1 2 3 4 5 6 |
match x: case 1: ... case 2 if(...): ... case _: ... |
Se il match con x è garantito… allora rimane da superare l’if
1 2 3 4 5 6 |
match x: case x if(...): ... case x if(...): ... case _: ... |
Sintassi 5
Confronto tra liste (con asterisco…)
1 2 3 4 5 6 7 |
lista = [0,1,2,3,4,5] match lista: case [1,2,3,4] : print("1 2 3 4") # Uguale a 1 2 3 4? case [1,2,*sub]: print("1 2 ...", sub) # Comincia con 1,2? case [*sub,4,5]: print(sub, "... 4 5") # Finisce con 4,5? case _ : print('Altri casi') |
Sintassi 6
…