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