Le 6 principali funzionalità utili di Python 3.10
Python 3.10 si vanta di essere una delle versioni più stabili disponibili per il download da parte degli utenti e verrà rilasciato entro la fine dell’anno. La versione appena rilasciata includerà molte modifiche evidenti, come funzionalità di facile utilizzo sia per i programmatori principianti che per quelli esperti.
I miglioramenti evidenti nella nuova versione di Python includono l’introduzione del pattern matching strutturale, migliori messaggi di errore, nuovi operatori di unione, numeri di riga precisi per il debug e molto altro.
Ecco cosa devi sapere su Python 3.10:
Corrispondenza dei modelli strutturali in Python 3.10
Lo Structural Pattern Matching rende la scrittura del codice un gioco da ragazzi e continua a essere uno dei punti salienti dell’ultima versione di Python. Python mira a migliorare le dichiarazioni match-case preesistenti presenti nelle versioni precedenti del linguaggio di programmazione. È stato effettuato un aggiornamento alle istruzioni match-case esistenti all’interno di Python.
Diamo una rapida occhiata alle implementazioni di Structural Pattern Matching:
L’istruzione match-case fa parte del linguaggio Python da un po’ di tempo. Questa affermazione viene fondamentalmente utilizzata per evitare il noioso lavoro di scrivere l’istruzione if-else più volte.
Puoi abbinare oggetti con proprietà simili usando questa funzione nella nuova build.
match media_object:
case Image(type="jpg"):
# Return as-is
return media_object
case Image(type="png") | Image(type="gif"):
return render_as(media_object, "jpg")
case Video():
raise ValueError("Can't extract frames from video yet")
case other_type:
raise Exception(f"Media type {media_object} can't be handled yet")
La nuova libreria Python riconosce oggetti come jpg, gif e video. Questo codice può essere eseguito senza problemi senza generare errori.
2. Messaggi di errore migliorati
Ogni programmatore probabilmente comprende l’importanza degli errori durante la scrittura del codice e quanto possono essere esasperanti alcuni tipi di errore. Le versioni precedenti di Python lanciavano messaggi di errore non appena si verificavano problemi nella sintassi. Questi potrebbero essere dovuti a sintassi sbagliata, parole chiave mancanti, parole chiave errate o errate, tra gli altri problemi.
Questi messaggi di errore erano tutt’altro che perfetti in quanto diventava difficile per i principianti (a volte anche per gli utenti avanzati) identificare la vera causa dell’errore nei loro codici. Come programmatore, Google continua ad essere tuo alleato nel decifrare il motivo alla base dei diversi messaggi di errore.
Ad esempio, molte persone potrebbero non sapere perché Python genera il seguente errore:
SyntaxError: unexpected EOF while parsing error message.
La mancanza di chiarezza in tali affermazioni ha spinto la versione più recente di Python a migliorare il suo insieme esistente di messaggi di errore.
I messaggi più vecchi sono stati sostituiti con messaggi di errore di facile comprensione come:
{ non è mai stato chiuso EOF imprevisto durante l’analisi
Alcune altre modifiche includono:
Errori di attributo come:
from collections import namedtoplo
il modulo ‘collezioni’ non ha attributo ‘namedtoplo’. Forse intendi: namedtuple?
I messaggi NameError vengono modificati per assomigliare a:
new_var = 5
print(new_vr)>
NameError: il nome ‘new_vr’ non è definito. Forse intendi: new_var?
3. Gestori di contesto tra parentesi
I nuovi gestori di contesto tra parentesi possono rendere il tuo codice più elegante. Anche se non è una caratteristica importante, può facilmente rendere il tuo codice meno goffo. Questa funzione è utile se lavori in un team e il tuo codice deve essere strutturato.
Immagina di scrivere una dichiarazione come:
with open('file1.txt', 'r') as fin, open('file2.txt', 'w') as fout:
fout.write(fin.read())
Il codice sopra funziona, ma la prima riga è troppo lunga e sembra goffa. Puoi interrompere la riga usando una barra rovesciata ( ) e rendere il codice strutturato:
with open('file1.txt', 'r') as fin, open('file2.txt', 'w') as fout: fout.write(fin.read())
Con l’introduzione del nuovo gestore di contesti tra parentesi, puoi anche interrompere la linea usando anche le parentesi:
with (open('file1.txt', 'r') as fin,
open('file2.txt', 'w') as fout):
fout.write(fin.read())
4. Nuovo tipo di operatore sindacale
Una caratteristica piccola ma utile in Python 3.10 è il nuovo tipo di operatore di unione. Ogni versione di Python viene fornita con un set predefinito di funzionalità di suggerimento del tipo.
L’operatore di unione include la logica condizionale; ad esempio, int o float possono essere scritti come Union[X, Y] . Il nuovo operatore union può essere espresso anche come int|float .
L’introduzione di un nuovo operando di unione in Python 3.10 fa risparmiare tempo e rende il codice ben definito.
Per esempio:
def f(x: int | float) -> float:
return x * 3.142
f(1) # pass
f(1.5) # pass
f('str') # linter will show annotation error
5. Numeri di riga precisi per il debug
Potresti aver notato molte volte prima che la traccia degli errori non ti reindirizza alla riga corretta in cui si è verificato un errore. Ciò rende difficile il debug per i programmatori che hanno appena iniziato a scrivere codice.
La traccia degli errori imperfetta è particolarmente evidente durante la scrittura di sys.settrace e degli strumenti correlati in Python. La versione più recente migliora questo in modo significativo e puoi vedere numeri di riga precisi quando si verifica un errore.
Per portare un numero di riga più preciso, Python 3.10 sposta la sua affidabilità dall’attuale attributo co_Inotab e usa il nuovo metodo co_lines() attributo. Questo attributo funziona in modo tale che f_lineo contenga sempre il numero di riga accurato.
1. for (
2. x) in [1]:
3. pass
4. return
6. Valutazione posticipata delle annotazioni
All’interno di Python, la valutazione dell’annotazione del tipo viene eseguita al momento della definizione della funzione. Ciò significa che le annotazioni di tipo vengono valutate riga per riga in modo dall’alto verso il basso.
Anche se potrebbe sembrare l’opzione migliore, ci sono ancora due problemi in questo approccio:
- I suggerimenti di tipo si riferiscono a tipi che non sono ancora definiti e non funzionano; questi suggerimenti devono essere espressi come stringhe.
- Le importazioni del modulo sono rallentate poiché i suggerimenti di tipo vengono eseguiti in tempo reale.
Per evitare problemi di esecuzione, le annotazioni vengono archiviate in _annotations_ e la valutazione viene eseguita insieme. Ciò consente il riferimento in avanti poiché le importazioni dei moduli vengono eseguite per prime, riducendo così il tempo di inizializzazione.
Lavorare con le funzionalità più recenti in Python 3.10
La versione più recente di Python uscirà il 4 ottobre 2021; promette di correggere i bug presenti nelle versioni esistenti. Le versioni che seguono miglioreranno l’attuale versione 3.10.
La mappatura dei modelli strutturali è il punto culminante di questo nuovo aggiornamento e semplifica la scrittura di codici per oggetti simili. Altre funzionalità come Parenthesized Context Managers e il nuovo tipo Union Operators mirano a rendere il codice più semplice ed efficiente.
Tuttavia, ci sono alcune eccellenti tecniche di gestione delle eccezioni all’interno delle versioni esistenti di Python. Puoi fare buon uso delle funzionalità di Python.