back to top

Switch in Python (usando match – case)

Nel mondo della programmazione, gestione delle strutture condizionali รจ fondamentale per l’esecuzione di operazioni differenti basate su valori specifici. Python ha introdotto una nuova modalitร  di implementazione delle istruzioni condizionali con il match-case, una funzionalitร  disponibile a partire dalla versione 3.10. In questo articolo esploreremo come utilizzare questo nuovo costrutto in python per simulare uno switch case, consentendo ai programmatori di scrivere codice piรน chiaro e conciso.

Il case switch รจ una struttura di controllo comune a molti linguaggi di programmazione, come Java e C++, che permette di eseguire operazioni diverse in base al valore di una variabile di controllo.

Pubblicitร 

Fino alla versione 3.10, Python non aveva una funzionalitร  integrata per implementare gli switch statement, costringendo i programmatori a utilizzare if ed elif per gestire le diverse condizioni. Questa limitazione ha reso il codice a volte meno leggibile e piรน difficile da mantenere.

Fortunatamente, con l’introduzione del structural pattern matching, ora รจ possibile implementare uno switch in Python utilizzando le parole chiave match e case.

In questa lezione, vedremo come simulare uno switch in Python in modo del tutto simile alle strutture dei linguaggi precedentemente menzionati.

Creare una struttura condizionale con if ed elif

Supponiamo di dover verificare il valore di una variabile โ€œgiornoโ€ e di stampare un testo diverso a seconda del suo valore. 1 corrisponderร  a โ€œLunedรฌโ€, 2 a โ€œMartedรฌโ€ e cosรฌ via. Dobbiamo anche stampare un messaggio di errore nel caso in cui il valore non rientri nei valori validi da 1 a 7.

Ecco un esempio usando una struttura condizionale del tipo if – elif:

giorno = 3

if giorno == 1:
  print("Lunedรฌ")
elif giorno == 2:
  print("Martedรฌ")
elif giorno == 3:
  print("Mercoledรฌ")
elif giorno == 4:
  print("Giovedรฌ")
elif giorno == 5:
  print("Venerdรฌ")
elif giorno == 6:
  print("Sabato")
elif giorno == 7:
  print("Domenica")
else:
  print("Giorno non valido")

In questo codice, controlliamo il valore della variabile โ€œgiornoโ€ e stampiamo il nome del giorno della settimana corrispondente, oppure โ€œGiorno non validoโ€ se il valore non รจ valido.

Creare uno switch case in Python

A partire dalla versione 3.10, Python offre la possibilitร  di “riscrivere” questa struttura in modo piรน “elegante” utilizzando il costrutto match – case col quale รจ possibile simulare uno switch case.

La sintassi di match – case

match variabile:
  case valore-1:
    azione-1
  case valore-2:
    azione-2
  case valore-3:
    azione-3
  case _:
    azione-default

Nota che il simbolo underscore (_) viene utilizzato per definire il caso di default nello switch statement in Python.

Un esempio di switch case in Python

def switch(giorno):
  match giorno:
    case 1:
      return "Lunedรฌ"
    case 2:
      return "Martedรฌ"
    case 3:
      return "Mercoledรฌ"
    case 4:
      return "Giovedรฌ"
    case 5:
      return "Venerdรฌ"
    case 6:
      return "Sabato"
    case 7:
      return "Domenica"
    case _:
      return "Giorno non valido"

Possiamo richiamare il nostro switch in questo modo:

print(switch(1))
print(switch(5))
print(switch(8))

Il risultato sarร :

Lunedรฌ
Venerdรฌ
Giorno non valido

In questo esempio, abbiamo definito una funzione โ€œswitchโ€ che restituisce il nome del giorno della settimana corrispondente al valore della variabile โ€œgiornoโ€. La funzione utilizza la sintassi match-case per eseguire operazioni diverse in base al valore di โ€œgiornoโ€. Se la variabile contiene uno dei valori previsti, la funzione restituisce il nome del giorno della settimana corrispondente. In caso contrario, viene restituito il messaggio โ€œGiorno non validoโ€.

Considerazioni finali

In entrambi gli esempi, abbiamo utilizzato una struttura di controllo di flusso per gestire condizioni diverse in base al valore di una singola variabile di controllo.

Inoltre, la sintassi if-elif appare meno efficiente rispetto alla sintassi match-case, la quale offre una soluzione piรน โ€œpulitaโ€ e moderna. Tuttavia, occorre considerare che la sintassi match-case non รจ supportata nelle versioni precedenti di Python.

In sintesi, gli switch statement in Python possono essere implementati utilizzando la sintassi if-elif o match-case. La scelta della sintassi dipende dalla versione di Python utilizzata e dallo stile di programmazione preferito. L’adozione del match-case non solo semplifica il codice, ma ne migliora anche la leggibilitร , rendendo la manutenzione piรน agevole.

Pubblicitร 
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.