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 | |