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