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