Python 3.9¶
Python 3.9.0 (definitief) werd uitgebracht op 5 oktober 2020. De functies voor 3.9 zijn gedefinieerd in PEP 596 en een gedetailleerde beschrijving van de wijzigingen is te vinden in What’s New in Python 3.9
Functies |
Status |
|
Snelle toegang tot modulestatus vanuit methoden van C-extensietypes |
Niet relevant |
|
Union-operatoren toegevoegd aan dict |
Voltooid [1] |
|
Type-hinting van generieke types in standaardcollecties |
||
Flexibele functie- en variabele-annotaties |
||
CPython hanteert een jaarlijkse releasecyclus. In plaats van jaarlijks wordt gestreefd naar een releasecyclus van twee maanden |
Niet relevant |
|
Versoepelde grammaticabeperkingen op decorators |
||
De IANA Time Zone Database is nu aanwezig in de standaardbibliotheek in de zoneinfo-module |
||
Tekenreeksmethoden om voor- en achtervoegsels te verwijderen |
||
CPython gebruikt nu een nieuwe parser op basis van PEG |
Niet relevant |
Overige taalwijzigingen:
__import__() roept nu ImportError op in plaats van ValueError |
Voltooid |
Python haalt nu het absolute pad op van de scriptbestandsnaam die op de opdrachtregel is opgegeven (bijv.: python3 script.py): het attribuut __file__ van de __main__-module is een absoluut pad geworden, in plaats van een relatief pad |
|
Standaard wordt voor de beste prestaties het errors-argument alleen gecontroleerd bij de eerste codeer-/decodeerfout, en wordt het encoding-argument soms genegeerd voor lege tekenreeksen |
|
“”.replace(“”, s, n) retourneert nu s in plaats van een lege tekenreeks voor alle niet-nul n. Het is nu consistent met “”.replace(“”, s) |
|
Elke geldige expressie kan nu als decorator worden gebruikt. Voorheen was de grammatica veel restrictiever |
|
Het parallel uitvoeren van aclose() / asend() / athrow() is nu verboden, en ag_running weerspiegelt nu de werkelijke uitvoeringsstatus van de async generator |
|
Onverwachte fouten bij het aanroepen van de methode __iter__ worden niet langer gemaskeerd door TypeError in de in-operator en de functies contains(), indexOf() en countOf() van de operator-module |
|
Lambda-expressies zonder haakjes kunnen niet langer het expressiegedeelte zijn in een if-clausule in comprehensions en generatorexpressies |
Wijzigingen in ingebouwde modules:
Vanwege aanzienlijke beveiligingszorgen wordt de parameter reuse_address van asyncio.loop.create_datagram_endpoint() niet langer ondersteund |
|
Een nieuwe coroutine shutdown_default_executor() toegevoegd die een afsluiting plant voor de standaard executor die wacht tot de ThreadPoolExecutor klaar is met afsluiten. Ook is asyncio.run() bijgewerkt om de nieuwe coroutine te gebruiken. |
|
asyncio.PidfdChildWatcher toegevoegd, een Linux-specifieke child-watcher-implementatie die proces-bestandsdescriptors pollt |
|
een nieuwe coroutine asyncio.to_thread() toegevoegd |
|
Bij het annuleren van de taak vanwege een time-out wacht asyncio.wait_for() nu tot de annulering is voltooid, ook in het geval dat timeout <= 0 is, net zoals bij positieve time-outs |
|
asyncio roept nu TyperError op bij het aanroepen van incompatibele methoden met een ssl.SSLSocket-socket |
|
Garbage collection blokkeert niet op herrezen objecten |
|
Een nieuwe functie gc.is_finalized() toegevoegd om te controleren of een object door de garbage collector is gefinaliseerd |
|
De functie math.gcd() uitgebreid om meerdere argumenten aan te kunnen. Voorheen ondersteunde deze slechts twee argumenten |
|
math.lcm() toegevoegd: retourneert het kleinste gemene veelvoud van de opgegeven argumenten |
|
math.nextafter() toegevoegd: retourneert de eerstvolgende floating-point-waarde na x in de richting van y |
|
math.ulp() toegevoegd: retourneert de waarde van het minst significante bit van een float |
|
De Linux-specifieke os.pidfd_open() en os.P_PIDFD beschikbaar gemaakt |
|
De functie os.unsetenv() is nu ook beschikbaar op Windows |
Voltooid |
De functies os.putenv() en os.unsetenv() zijn nu altijd beschikbaar |
Voltooid |
Functie os.waitstatus_to_exitcode() toegevoegd: converteert een wachtstatus naar een exit-code |
|
Een nieuwe methode random.Random.randbytes toegevoegd: genereert willekeurige bytes |
|
Een nieuw attribuut sys.platlibdir toegevoegd: naam van de platformspecifieke bibliotheekmap |
|
Voorheen was sys.stderr block-buffered wanneer niet-interactief. Nu is stderr standaard altijd line-buffered |
|
Opmerkingen