Post

Pattern Matching in Python: match/case Meglio di if/elif

Pattern Matching in Python: match/case Meglio di if/elif

Quando usarlo

Python 3.10+ introduce match/case per sostituire lunghe catene di if/elif. È perfetto per parsing di dati strutturati, state machines, o quando devi confrontare valori complessi. Rende il codice più leggibile e meno soggetto a errori rispetto ai classici if annidati.

Snippet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def elabora_risposta(response):
    match response:
        case {"status": "success", "data": data}:
            return f"Successo: {data}"
        case {"status": "error", "code": 404}:
            return "Risorsa non trovata"
        case {"status": "error", "code": code} if code >= 500:
            return f"Errore server: {code}"
        case {"status": status}:
            return f"Status sconosciuto: {status}"
        case _:  # default
            return "Formato non riconosciuto"

# Esempi d'uso
print(elabora_risposta({"status": "success", "data": "OK"}))

Perché funziona

match/case fa pattern matching strutturale, non solo confronti di valori. Può estrarre parti di oggetti complessi, applicare condizioni con guard (if), e gestire tipi diversi in modo elegante. È più espressivo di if/elif e spesso più performante grazie alle ottimizzazioni del compiler.

Attenzione a…

  • Disponibile solo da Python 3.10+ - controlla la versione prima di usarlo
  • I pattern sono valutati in ordine - il primo match vince
  • Usa sempre case _: come fallback per evitare eccezioni non gestite

Vedi anche

This post is licensed under CC BY 4.0 by the author.