INSTALLAZIONE DI PYTHON 3.10
Prima di affrontare l’argomento “pattern matching” parliamo dell’installazione di Python 3.10. Scaricare il programma dal sito python.org e installatelo o nel folder che vi viene proposto automaticamente, oppure decidete voi una diversa directory di installazione. Una volta installato il programma configurate la variabile ambiente di sistema Path impostando il percorso della directory di installazione di Python 3.10. Riavviate il computer e tutto dovrebbe essere ok. Aprite una schell di Python per vedere se la versione corrente è la 3.10.
PATTERN MATCHING
Il pattern matching è la principale caratteristica aggiunta in Python 3.10. Il significato in termini generali è il seguente: “Verifica della presenza di un pattern all’interno di un oggetto composito“. Per pattern si intende un modello generale applicato ad un certo numero di casi particolari. Guardando la figura si può vedere che il processo di pattern matching inizia con un subject con associato un valore che guida l’intero processo di matching. È il valore che vogliamo confrontare con una serie di pattern.
Abbiamo creato una variabile che punta ad una lista di elementi, attiviamo poi il match usando la lista come soggetto e introduciamo un primo pattern da confrontare con il soggetto stesso. Come prima cosa si verifica se il soggetto ha una certa struttura che in questo caso è composta di due elementi p e s. Ciò significa che il pattern ha successo se il soggetto è costituito da due elementi come nell’esempio. Essendoci il matching viene applicato il blocco di codice che segue il case. I pattern vengono valutati uno alla volta dall’alto verso il basso e quando uno ha successo nell’abbinarsi al soggetto il suo codice viene eseguito, mentre tutti gli altri pattern vengono scartati. Tornando al nostro esempio il matching avendo successo provoca il binding dei due elementi trovati nella lista che vengono poi stampati con una print. La variabile p viene associata al primo elemento, mentre la variabile s al secondo. Riassumendo possiamo dire che un pattern confrontato con un soggetto è in grado di restituire due tipi di risultato, un matching e un binding.
PATTERN MATCHING – CAPTURE PATTERNS
Le parentesi quadre utilizzate per definire il pattern possono essere sostituite con parentesi tonde oppure essere omesse usando semplicemente variabili separate da virgole.
La forma del primo pattern prevede due elementi e quindi il match fallisce, il secondo pattern realizza un match in quanto abbiamo una forma con tre elementi. Aggiungiamo ora un nuovo elemento alla lista.
In questo caso i primi due pattern falliscono, aggiungiamo un ulteriore pattern costituito semplicemente da un underscore. Questo pattern prende il nome di wildcard. Se nessuno dei pattern precedenti ha avuto successo scatta questo jolly che di fatto ha sempre successo. Deve essere inserito sempre come ultimo case.
LITERAL PATTERNS
Mentre in precedenza come pattern indicavamo sempre delle variabili che servivano a effettuare un binding automatico, in questo caso abbiamo espresso dei literal, cioè dei valori nel codice. Il pattern viene confrontato con il soggetto valore per valore e se la forma e i valori soddisfano il soggetto il pattern ha successo e quindi viene eseguito. Ora modifichiamo il programma.
Il pattern viene soddisfatto quando il soggetto è una sequenza che contiene il numero 1 come primo elemento, tutti i successivi elementi verranno messi in binding tramite una variabile.
PATTERN MATCHING – OR PATTERNS
Abbiamo introdotto due pattern separati da un OR Logico composti da un literal e una variabile. Il literal è un confronto con il corrispondente valore nel soggetto mentre la variabile msg è un binding che ha successo nel caso in cui il literal corrisponde al primo elemento della lista.
Siccome i pattern in or tra loro potrebbero essere soddisfatti contemporaneamente, il nome di variabile msg non deve cambiare.
AS PATTERN
Specifichiamo un pattern che inizia con un vincolo strutturale e successivamente con la parola chiave as facciamo un binding su una variabile perché vogliamo sapere se si è in primavera o in estate.
CONDITIONAL PATTERNS
La struttura condizionale è parte integrante del pattern. La domanda che ci poniamo è: Cosa succede se specifichiamo “pari” poi il numero è dispari? La risposta è che nessun matching va a buon fine, e il programma esegue il ramo wildcard.
Lascia un commento