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.