Python 3.9¶
Python 3.9.0 (final) släpptes den 5 oktober 2020. Funktionerna för 3.9 definieras i PEP 596 och en detaljerad beskrivning av ändringarna finns i What’s New in Python 3.9
Funktioner |
Status |
|
Snabb åtkomst till modultillstånd från metoder i C-utökningstyper |
Inte relevant |
|
Union-operatorer tillagda i dict |
Klar [1] |
|
Typtipsning av generics i standardsamlingar |
||
Flexibla funktions- och variabelannoteringar |
||
CPython inför en årlig utgivningscykel. I stället för årligen, med målet om en utgivningscykel på två månader |
Inte relevant |
|
Uppmjukade grammatikbegränsningar för dekoratorer |
||
IANA:s tidszonsdatabas finns nu i standardbiblioteket i modulen zoneinfo |
||
Strängmetoder för att ta bort prefix och suffix |
||
CPython använder nu en ny parser baserad på PEG |
Inte relevant |
Övriga språkändringar:
__import__() ger nu ImportError i stället för ValueError |
Klar |
Python hämtar nu den absoluta sökvägen för det skriptfilnamn som anges på kommandoraden (t.ex.: python3 script.py): attributet __file__ för modulen __main__ blev en absolut sökväg i stället för en relativ sökväg |
|
Som standard, för bästa prestanda, kontrolleras errors-argumentet endast vid det första kodnings-/avkodningsfelet och encoding-argumentet ignoreras ibland för tomma strängar |
|
””.replace(””, s, n) returnerar nu s i stället för en tom sträng för alla n som inte är noll. Det är nu konsekvent med ””.replace(””, s) |
|
Vilket giltigt uttryck som helst kan nu användas som en dekorator. Tidigare var grammatiken mycket mer restriktiv |
|
Parallell körning av aclose() / asend() / athrow() är nu förbjuden, och ag_running återspeglar nu det faktiska körningstillståndet för den asynkrona generatorn |
|
Oväntade fel vid anrop av metoden __iter__ maskeras inte längre av TypeError i in-operatorn och funktionerna contains(), indexOf() och countOf() i operator-modulen |
|
Lambda-uttryck utan parenteser kan inte längre vara uttrycksdelen i en if-klausul i comprehensions och generatoruttryck |
Ändringar i inbyggda moduler:
På grund av betydande säkerhetsproblem stöds parametern reuse_address för asyncio.loop.create_datagram_endpoint() inte längre |
|
Lade till en ny coroutine shutdown_default_executor() som schemalägger en nedstängning av standardexekveraren som väntar på att ThreadPoolExecutor ska bli klar med att stänga. Dessutom har asyncio.run() uppdaterats för att använda den nya coroutinen. |
|
Lade till asyncio.PidfdChildWatcher, en Linux-specifik implementering av barnprocessbevakare som pollar processfildeskriptorer |
|
lade till en ny coroutine asyncio.to_thread() |
|
Vid avbrytning av uppgiften på grund av en timeout väntar asyncio.wait_for() nu tills avbrytningen är klar även i det fall då timeout är <= 0, precis som den gör med positiva timeouts |
|
asyncio ger nu TyperError när inkompatibla metoder anropas med en ssl.SSLSocket-socket |
|
Skräpinsamling blockerar inte på återuppståndna objekt |
|
Lade till en ny funktion gc.is_finalized() för att kontrollera om ett objekt har finaliserats av skräpsamlaren |
|
Utökade funktionen math.gcd() för att hantera flera argument. Tidigare stödde den endast två argument |
|
Lade till math.lcm(): returnerar minsta gemensamma multipel av angivna argument |
|
Lade till math.nextafter(): returnerar nästa flyttalsvärde efter x i riktning mot y |
|
Lade till math.ulp(): returnerar värdet av den minst signifikanta biten i ett flyttal |
|
Exponerade de Linux-specifika os.pidfd_open() och os.P_PIDFD |
|
Funktionen os.unsetenv() är nu även tillgänglig på Windows |
Klar |
Funktionerna os.putenv() och os.unsetenv() är nu alltid tillgängliga |
Klar |
Lade till funktionen os.waitstatus_to_exitcode(): konverterar en väntstatus till en slutkod |
|
Lade till en ny metod random.Random.randbytes: genererar slumpmässiga byte |
|
Lade till ett nytt attribut sys.platlibdir: namnet på den plattformsspecifika biblioteksskatalogen |
|
Tidigare var sys.stderr blockbuffrad när den var icke-interaktiv. Nu är stderr som standard alltid radbuffrad |
|
Anteckningar