Python 3.8¶
Python 3.8.0 (lopullinen) julkaistiin 14.10.2019. Version 3.8 ominaisuudet on määritelty dokumentissa PEP 569 ja yksityiskohtainen kuvaus muutoksista löytyy dokumentista What’s New in Python 3.8.
Ominaisuudet |
Tila |
|
Vain sijaintiin perustuvat argumentit |
||
Sijoituslausekkeet |
Valmis |
|
Pickle-protokolla 5 kaistan ulkopuolisella datalla |
||
Ajonaikaiset auditointikoukut |
||
Pythonin alustuskokoonpano |
||
Vectorcall: nopea kutsuprotokolla CPythonille |
||
Sekalaista |
||
f-merkkijonot tukevat =-merkkiä itsedokumentoiviin lausekkeisiin ja virheenkorjaukseen |
Valmis |
|
Muut kielen muutokset:
continue-lause oli laiton finally-lohkossa toteutusongelman vuoksi. Pythonissa 3.8 tämä rajoitus poistettiin |
Valmis |
Tyypeillä bool, int ja fractions.Fraction on nyt as_integer_ratio()-metodi, kuten tyypeillä float ja decimal.Decimal |
|
Tyyppien int, float ja complex konstruktorit käyttävät nyt erikoismetodia __index__(), jos se on saatavilla eikä vastaava metodi __int__(), __float__() tai __complex__() ole saatavilla |
|
Lisätty tuki N{name}-escape-merkinnöille säännöllisissä lausekkeissa |
|
Sanakirjat ja dictview-näkymät ovat nyt iteroitavissa käänteisessä lisäysjärjestyksessä reversed()-funktiolla |
|
Funktiokutsujen avainsananimissä sallittua syntaksia rajoitettiin edelleen. Erityisesti f((keyword)=arg) ei ole enää sallittu |
|
Yleistetty iteroitavien purkaminen yield- ja return-lauseissa ei enää vaadi ympäröiviä sulkeita |
|
Kun pilkku puuttuu koodista, kuten [(10, 20) (30, 40)], kääntäjä näyttää SyntaxWarning-varoituksen hyödyllisellä ehdotuksella |
|
Tyypin datetime.date tai datetime.datetime aliluokkien ja datetime.timedelta-objektien väliset aritmeettiset operaatiot palauttavat nyt aliluokan instanssin perusluokan sijaan |
|
Kun Python-tulkki keskeytetään Ctrl-C (SIGINT)-näppäimillä eikä seurannutta KeyboardInterrupt-poikkeusta käsitellä, Python-prosessi poistuu nyt SIGINT-signaalin kautta tai oikealla poistumiskoodilla siten, että kutsuva prosessi voi havaita sen kuolleen Ctrl-C:n vuoksi |
|
Jotkin edistyneet ohjelmointityylit vaativat olemassa olevan funktion types.CodeType-objektin päivittämistä |
|
Kokonaisluvuilla pow()-funktion kolmiargumenttinen muoto sallii nyt eksponentin olla negatiivinen tapauksessa, jossa kantaluku on suhteellisen jaoton modulukseen nähden |
|
Dict-läpikäynnit (comprehension) on synkronoitu dict-literaalien kanssa siten, että avain lasketaan ensin ja arvo toiseksi |
|
object.__reduce__()-metodi voi nyt palauttaa monikon (tuple), jonka pituus on kahdesta kuuteen elementtiä |
Sisäänrakennettujen moduulien muutokset:
asyncio.run() on edennyt väliaikaisesta vakaaksi API:ksi |
Valmis |
python -m asyncio käynnistää natiivisti asynkronisen REPL:n |
|
Poikkeus asyncio.CancelledError periytyy nyt tyypistä BaseException aiemman Exception:n sijaan eikä enää periydy tyypistä concurrent.futures.CancelledError |
Valmis |
Lisätty asyncio.Task.get_coro() käärityn korutiinin hakemiseen asyncio.Task-objektin sisältä |
|
Asyncio-tehtävät voidaan nyt nimetä joko välittämällä name-avainsana-argumentti asyncio.create_task()-funktiolle tai tapahtumasilmukan create_task()-metodille, tai kutsumalla tehtäväobjektin set_name()-metodia |
|
Lisätty tuki Happy Eyeballs -tekniikalle funktioon asyncio.loop.create_connection(). Toiminnan määrittämiseksi on lisätty kaksi uutta parametria: happy_eyeballs_delay ja interleave. |
|
get_objects() voi nyt vastaanottaa valinnaisen generation-parametrin, joka osoittaa sukupolven, josta objektit haetaan. (Huomaa kuitenkin, että vaikka gc on sisäänrakennettu, get_objects() ei ole toteutettu MicroPythonissa) |
|
Lisätty uusi funktio math.dist() kahden pisteen välisen euklidisen etäisyyden laskemiseen |
|
Laajennettu math.hypot()-funktio käsittelemään useita ulottuvuuksia |
|
Lisätty uusi funktio math.prod(), joka on sum()-funktion vastine ja palauttaa ”start”-arvon (oletus: 1) ja iteroitavan lukusarjan tulon |
|
Lisätty kaksi uutta kombinatorista funktiota math.perm() ja math.comb() |
|
Lisätty uusi funktio math.isqrt() tarkkojen kokonaislukuneliöjuurien laskemiseen ilman liukulukumuunnosta |
|
Funktio math.factorial() ei enää hyväksy argumentteja, jotka eivät ole int-tyyppisiä |
Valmis |
Lisätty uusi funktio sys.unraisablehook(), joka voidaan ylikirjoittaa hallitsemaan, miten ”unraisable exceptions” -poikkeuksia käsitellään |
|