Python 3.9¶
Python 3.9.0 (lopullinen) julkaistiin 5.10.2020. Version 3.9 ominaisuudet on määritelty dokumentissa PEP 596 ja yksityiskohtainen kuvaus muutoksista löytyy dokumentista What’s New in Python 3.9
Ominaisuudet | Tila | |
Nopea pääsy moduulin tilaan C-laajennustyyppien metodeista | Ei relevantti | |
Unioni-operaattorit lisätty sanakirjaan (dict) | Valmis [1] | |
Tyyppivihjeiden geneeriset tyypit vakiokokoelmissa | ||
Joustavat funktio- ja muuttuja-annotaatiot | ||
CPython ottaa käyttöön vuosittaisen julkaisusyklin. Vuosittaisen sijaan tavoitteena kahden kuukauden julkaisusykli | Ei relevantti | |
Väljennetyt kielioppirajoitukset dekoraattoreille | ||
IANA-aikavyöhyketietokanta on nyt vakiokirjastossa zoneinfo-moduulissa | ||
Merkkijonometodit etuliitteiden ja jälkiliitteiden poistamiseen | ||
CPython käyttää nyt uutta PEG-pohjaista jäsennintä | Ei relevantti |
Muut kielen muutokset:
__import__() nostaa nyt ImportError:n ValueError:n sijaan | Valmis |
Python hakee nyt komentorivillä määritetyn skriptitiedoston absoluuttisen polun (esim. python3 script.py): __main__-moduulin __file__-attribuutista tuli absoluuttinen polku suhteellisen polun sijaan | |
Oletuksena, parhaan suorituskyvyn vuoksi, errors-argumentti tarkistetaan vain ensimmäisen koodaus-/dekoodausvirheen kohdalla, ja encoding-argumentti jätetään joskus huomiotta tyhjien merkkijonojen kohdalla | |
””.replace(””, s, n) palauttaa nyt s:n tyhjän merkkijonon sijaan kaikilla nollasta poikkeavilla n:n arvoilla. Se on nyt yhdenmukainen ilmauksen ””.replace(””, s) kanssa | |
Mitä tahansa kelvollista lauseketta voidaan nyt käyttää dekoraattorina. Aiemmin kielioppi oli paljon rajoittavampi | |
Funktioiden aclose() / asend() / athrow() rinnakkainen suorittaminen on nyt kielletty, ja ag_running heijastaa nyt asynkronisen generaattorin todellista suoritustilaa | |
Odottamattomia virheitä __iter__-metodin kutsumisessa ei enää peitetä TypeError-virheellä in-operaattorissa eikä operator-moduulin funktioissa contains(), indexOf() ja countOf() | |
Sulkemattomat lambda-lausekkeet eivät enää voi olla lausekeosana läpikäyntien (comprehension) ja generaattorilausekkeiden if-lohkossa |
Sisäänrakennettujen moduulien muutokset:
Merkittävien tietoturvahuolien vuoksi asyncio.loop.create_datagram_endpoint()-funktion reuse_address-parametria ei enää tueta | |
Lisätty uusi korutiini shutdown_default_executor(), joka ajastaa oletussuorittajan sammutuksen ja odottaa, että ThreadPoolExecutor lopettaa sulkemisen. Lisäksi asyncio.run() on päivitetty käyttämään uutta korutiinia. | |
Lisätty asyncio.PidfdChildWatcher, Linux-kohtainen lapsiprosessien valvojatoteutus, joka kyselee prosessien tiedostokuvaajia (file descriptor) | |
lisätty uusi coroutine asyncio.to_thread() | |
Kun tehtävä perutaan aikakatkaisun vuoksi, asyncio.wait_for() odottaa nyt peruutuksen valmistumiseen asti myös tapauksessa, jossa aikakatkaisu on <= 0, kuten se tekee positiivisilla aikakatkaisuilla | |
asyncio nostaa nyt TyperError:n, kun yhteensopimattomia metodeja kutsutaan ssl.SSLSocket-soketin kanssa | |
Roskienkeräys ei jää odottamaan henkiinherätettyjä objekteja | |
Lisätty uusi funktio gc.is_finalized() tarkistamaan, onko objekti viimeistelty roskienkerääjän toimesta | |
Laajennettu math.gcd()-funktio käsittelemään useita argumentteja. Aiemmin se tuki vain kahta argumenttia | |
Lisätty math.lcm(): palauttaa määritettyjen argumenttien pienimmän yhteisen jaettavan | |
Lisätty math.nextafter(): palauttaa seuraavan liukulukuarvon x:n jälkeen kohti y:tä | |
Lisätty math.ulp(): palauttaa liukuluvun vähiten merkitsevän bitin arvon | |
Tuotu esiin Linux-kohtaiset os.pidfd_open() ja os.P_PIDFD | |
Funktio os.unsetenv() on nyt saatavilla myös Windowsissa | Valmis |
Funktiot os.putenv() ja os.unsetenv() ovat nyt aina saatavilla | Valmis |
Lisätty funktio os.waitstatus_to_exitcode(): muuntaa odotustilan poistumiskoodiksi | |
Lisätty uusi metodi random.Random.randbytes: generoi satunnaisia tavuja | |
Lisätty uusi attribuutti sys.platlibdir: alustakohtaisen kirjastohakemiston nimi | |
Aiemmin sys.stderr oli lohkopuskuroitu ei-interaktiivisessa tilassa. Nyt stderr on oletuksena aina rivipuskuroitu | |
Huomautukset