Python 3.9¶
Python 3.9.0 (finale) è stato rilasciato il 5 ottobre 2020. Le funzionalità della 3.9 sono definite nel PEP 596 e una descrizione dettagliata delle modifiche è disponibile in What’s New in Python 3.9
Funzionalità | Stato | |
Accesso rapido allo stato del modulo dai metodi dei tipi delle estensioni C | Non rilevante | |
Operatori di unione aggiunti ai dict | Completo [1] | |
Type hinting dei generici nelle collezioni standard | ||
Annotazioni flessibili di funzioni e variabili | ||
CPython adotta un ciclo di rilascio annuale. Invece che annuale, si punta a un ciclo di rilascio bimestrale | Non rilevante | |
Restrizioni grammaticali allentate sui decoratori | ||
Il database dei fusi orari IANA è ora presente nella libreria standard nel modulo zoneinfo | ||
Metodi delle stringhe per rimuovere prefissi e suffissi | ||
CPython usa ora un nuovo parser basato su PEG | Non rilevante |
Altre modifiche al linguaggio:
__import__() solleva ora ImportError anziché ValueError | Completo |
Python ottiene ora il percorso assoluto del nome del file di script specificato sulla riga di comando (es: python3 script.py): l’attributo __file__ del modulo __main__ è diventato un percorso assoluto, anziché relativo | |
Per impostazione predefinita, per ottenere le migliori prestazioni, l’argomento errors viene controllato solo al primo errore di codifica/decodifica e l’argomento encoding viene talvolta ignorato per le stringhe vuote | |
«».replace(«», s, n) restituisce ora s anziché una stringa vuota per ogni n diverso da zero. È ora coerente con «».replace(«», s) | |
Qualsiasi espressione valida può ora essere usata come decoratore. In precedenza, la grammatica era molto più restrittiva | |
L’esecuzione parallela di aclose() / asend() / athrow() è ora vietata e ag_running riflette ora lo stato di esecuzione effettivo del generatore asincrono | |
Gli errori imprevisti nella chiamata del metodo __iter__ non vengono più mascherati da TypeError nell’operatore in e nelle funzioni contains(), indexOf() e countOf() del modulo operator | |
Le espressioni lambda non racchiuse tra parentesi non possono più essere la parte espressione di una clausola if nelle comprehension e nelle espressioni generatore |
Modifiche ai moduli integrati:
A causa di significativi problemi di sicurezza, il parametro reuse_address di asyncio.loop.create_datagram_endpoint() non è più supportato | |
Aggiunta una nuova coroutine shutdown_default_executor() che pianifica lo spegnimento dell’executor predefinito attendendo che il ThreadPoolExecutor completi la chiusura. Inoltre, asyncio.run() è stata aggiornata per usare la nuova coroutine. | |
Aggiunta asyncio.PidfdChildWatcher, un’implementazione di child watcher specifica per Linux che esegue il polling dei descrittori di file dei processi | |
aggiunta una nuova coroutine asyncio.to_thread() | |
Quando si annulla la task a causa di un timeout, asyncio.wait_for() attende ora che l’annullamento sia completo anche nel caso in cui il timeout sia <= 0, come avviene con i timeout positivi | |
asyncio solleva ora TyperError quando si chiamano metodi incompatibili con un socket ssl.SSLSocket | |
La garbage collection non si blocca sugli oggetti resuscitati | |
Aggiunta una nuova funzione gc.is_finalized() per verificare se un oggetto è stato finalizzato dal garbage collector | |
Estesa la funzione math.gcd() per gestire più argomenti. In precedenza supportava solo due argomenti | |
Aggiunta math.lcm(): restituisce il minimo comune multiplo degli argomenti specificati | |
Aggiunta math.nextafter(): restituisce il successivo valore in virgola mobile dopo x in direzione di y | |
Aggiunta math.ulp(): restituisce il valore del bit meno significativo di un float | |
Esposte le funzioni os.pidfd_open() e os.P_PIDFD specifiche per Linux | |
La funzione os.unsetenv() è ora disponibile anche su Windows | Completo |
Le funzioni os.putenv() e os.unsetenv() sono ora sempre disponibili | Completo |
Aggiunta la funzione os.waitstatus_to_exitcode(): converte uno stato di attesa in un codice di uscita | |
Aggiunto un nuovo metodo random.Random.randbytes: genera byte casuali | |
Aggiunto un nuovo attributo sys.platlibdir: nome della directory delle librerie specifica della piattaforma | |
In precedenza, sys.stderr era con buffering a blocchi quando non interattivo. Ora stderr per impostazione predefinita usa sempre il buffering a riga | |
Note