Python 3.9¶
Python 3.9.0 (final) a fost lansat pe 5 octombrie 2020. Funcționalitățile pentru 3.9 sunt definite în PEP 596, iar o descriere detaliată a modificărilor poate fi găsită în Ce este nou în Python 3.9
Funcționalități |
Stare |
|
Acces rapid la starea modulului din metodele tipurilor de extensie C |
Nerelevant |
|
Operatori de uniune adăugați la dict |
Complet [1] |
|
Adnotări de tip generice în colecțiile standard |
||
Adnotări flexibile pentru funcții și variabile |
||
CPython adoptă un ciclu de lansare anual. În loc de anual, se vizează un ciclu de lansare la două luni |
Nerelevant |
|
Restricții de gramatică relaxate pentru decoratori |
||
Baza de date IANA a fusurilor orare este acum prezentă în biblioteca standard, în modulul zoneinfo |
||
Metode pentru șiruri de caractere pentru eliminarea prefixelor și sufixelor |
||
CPython folosește acum un nou analizor sintactic bazat pe PEG |
Nerelevant |
Alte modificări ale limbajului:
__import__() ridică acum ImportError în loc de ValueError |
Complet |
Python obține acum calea absolută a numelui fișierului script specificat în linia de comandă (ex: python3 script.py): atributul __file__ al modulului __main__ a devenit o cale absolută, în loc de o cale relativă |
|
În mod implicit, pentru cea mai bună performanță, argumentul errors este verificat doar la prima eroare de codificare/decodificare, iar argumentul encoding este uneori ignorat pentru șirurile goale |
|
„”.replace(„”, s, n) returnează acum s în loc de un șir gol pentru toate valorile n diferite de zero. Este acum consecvent cu „”.replace(„”, s) |
|
Orice expresie validă poate fi acum folosită ca decorator. Anterior, gramatica era mult mai restrictivă |
|
Rularea în paralel a aclose() / asend() / athrow() este acum interzisă, iar ag_running reflectă acum starea reală de rulare a generatorului asincron |
|
Erorile neașteptate la apelarea metodei __iter__ nu mai sunt mascate de TypeError în operatorul in și în funcțiile contains(), indexOf() și countOf() ale modulului operator |
|
Expresiile lambda fără paranteze nu mai pot fi partea expresie dintr-o clauză if în comprehensiuni și expresii de generator |
Modificări ale modulelor încorporate:
Din cauza unor probleme semnificative de securitate, parametrul reuse_address al asyncio.loop.create_datagram_endpoint() nu mai este acceptat |
|
A fost adăugată o nouă corutină shutdown_default_executor() care programează o oprire pentru executorul implicit, care așteaptă ca ThreadPoolExecutor să termine închiderea. De asemenea, asyncio.run() a fost actualizată pentru a folosi noua corutină. |
|
A fost adăugat asyncio.PidfdChildWatcher, o implementare de supraveghetor de procese-copil specifică Linux, care interoghează descriptorii de fișiere ai proceselor |
|
a fost adăugată o nouă coroutine asyncio.to_thread() |
|
La anularea sarcinii din cauza expirării unui timp limită, asyncio.wait_for() va aștepta acum până când anularea este completă, inclusiv în cazul în care timpul limită este <= 0, la fel cum face cu timpii limită pozitivi |
|
asyncio ridică acum TyperError la apelarea unor metode incompatibile cu un socket ssl.SSLSocket |
|
Colectarea gunoiului nu se mai blochează pe obiectele reînviate |
|
A fost adăugată o nouă funcție gc.is_finalized() pentru a verifica dacă un obiect a fost finalizat de colectorul de gunoi |
|
A fost extinsă funcția math.gcd() pentru a gestiona argumente multiple. Anterior, accepta doar două argumente |
|
A fost adăugat math.lcm(): returnează cel mai mic multiplu comun al argumentelor specificate |
|
A fost adăugat math.nextafter(): returnează următoarea valoare în virgulă mobilă după x în direcția lui y |
|
A fost adăugat math.ulp(): returnează valoarea celui mai puțin semnificativ bit al unui float |
|
Au fost expuse funcțiile specifice Linux os.pidfd_open() și os.P_PIDFD |
|
Funcția os.unsetenv() este acum disponibilă și pe Windows |
Complet |
Funcțiile os.putenv() și os.unsetenv() sunt acum întotdeauna disponibile |
Complet |
A fost adăugată funcția os.waitstatus_to_exitcode(): convertește o stare de așteptare într-un cod de ieșire |
|
A fost adăugată o nouă metodă random.Random.randbytes: generează octeți aleatori |
|
A fost adăugat un nou atribut sys.platlibdir: numele directorului de biblioteci specific platformei |
|
Anterior, sys.stderr era stocat în tampon pe blocuri când nu era interactiv. Acum stderr este implicit întotdeauna stocat în tampon pe linii |
|
Note