Articolo originale: https://www.freecodecamp.org/news/python-switch-statement-switch-case-example/

Fino alla versione 3.10, Python non ha mai avuto una funzionalità per implementare quello che l'istruzione switch fa in altri linguaggi di programmazione.

Quindi, volendo eseguire istruzioni condizionali multiple, avresti dovuto usare la parola chiave elif, in questo modo:

età = 120

if età > 90:
    print("Sei troppo vecchio per la festa.")
elif età < 0:
    print("Non sei ancora nato.")
elif età >= 18:
    print("Puoi entrare alla festa.")
else: 
    "Sei troppo giovane per la festa."

# Output: Sei troppo vecchio per la festa.

Dalla versione 3.10 in poi, Python possiede una funzionalità switch case chiamata “structural pattern matching”, che puoi implementare utilizzando le parole chiave match e case.

Alcune persone dibattono riguardo al fatto che match e case siano delle parole chiave in Python, e questo perché è possibile utilizzarle entrambe come nomi di variabili e di funzioni, ma questa è un'altra storia.

Volendo, possiamo riferirci a entrambe come parole chiave "soft".

In questo articolo, ti mostrerò come scrivere un'istruzione switch in Python usando le parole chiave match e case.

Prima però, voglio mostrarti cosa usavano i programmatori per simulare un'istruzione switch ai vecchi tempi.

Come simulare un'istruzione switch case

Per i Pythonisti, c'erano diversi modi di simulare un'istruzione switch in passato.

Uno di questi è utilizzare una funzione e la parola chiave elif, in questo modo:

def switch(lingua):
    if lingua == "JavaScript":
        return "Puoi diventare uno sviluppatore web."
    elif lingua == "PHP":
        return "Puoi diventare uno sviluppatore back end."
    elif lingua == "Python":
        return "Puoi diventare un data scientist."
    elif lingua == "Solidity":
        return "Puoi diventare uno sviluppatore blockchain."
    elif lingua == "Java":
        return "Puoi diventare uno sviluppatore di app mobile."

print(switch("JavaScript"))   
print(switch("PHP"))   
print(switch("Java"))  

"""
Output: 
Puoi diventare uno sviluppatore web.
Puoi diventare uno sviluppatore back end.
Puoi diventare uno sviluppatore di app mobile.
"""

Come implementare istruzioni switch con le parole chiave match e case in Python 3.10

Per scrivere delle istruzioni switch con la funzionalità structural pattern matching, puoi usare la seguente sintassi:

match term:
    case pattern-1:
         action-1
    case pattern-2:
         action-2
    case pattern-3:
         action-3
    case _:
        action-default

Osserva che il trattino basso viene usato per definire un caso predefinito per l'istruzione switch in Python.

Un esempio di un'istruzione switch con la sintassi match case è mostrato qui sotto. Si tratta di un programma che stampa quello che puoi diventare imparando vari linguaggi di programmazione:

lang = input("Quale linguaggio di programmazione vuoi imparare? ")

match lang:
    case "JavaScript":
        print("Puoi diventare uno sviluppatore web.")

    case "Python":
        print("Puoi diventare un data scientist.")

    case "PHP":
        print("Puoi diventare uno sviluppatore back end.")
    
    case "Solidity":
        print("Puoi diventare uno sviluppatore blockchain.")

    case "Java":
        print("Puoi diventare uno sviluppatore di app mobile.")
    case _:
        print("Il linguaggio non è importante, ciò che conta è risolvere problemi.")

È una sintassi molto più pulita rispetto a delle istruzioni elif multiple e simula l'istruzione switch con una funzione.

Probabilmente hai notato che non ho aggiunto la parola chiave break per ognuno dei casi, come avviene in altri linguaggi di programmazione. Questo è il vantaggio dell'istruzione switch in Python rispetto agli altri linguaggi. La funzionalità della parola chiave break è implementata in background.

Conclusione

In questo articolo, hai visto come scrivere delle istruzioni switch con le parole chiave match e case, e hai imparato il modo in cui i programmatori Python scrivevano questa istruzione prima della versione 3.10.

Le istruzioni match e case sono state implementate in Python per fornire la funzionalità dell'istruzione switch offerte da altri linguaggi di programmazione come JavaScript, PHP, C++.

Grazie per aver letto questo articolo.