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