Ohjelmointi

Python 3.9: Mikä on uutta ja parempaa

Tänään julkaistu Python 3.9 tuo merkittäviä muutoksia sekä kielen ominaisuuksiin että kielen kehitystapaan. Python on kasvattanut suosiotaan viime vuosina, ja sen käyttö on räjähtänyt nopeasti kehittyvillä alueilla, kuten datatiede ja koneoppiminen. Projekti työskentelee kovasti pysyäkseen mukana kaikissa uusissa vaatimuksissa.

Tässä on yhteenveto kaikista Python 3.9: n suurista uusista ominaisuuksista.

Python siirtyy vuotuiseen julkaisusykliin

Tähän asti Python on kehitetty ja julkaistu kahdeksantoista kuukauden poljinnopeudella. PEP 602 ehdotti, että Python-kehitystiimi hyväksyisi vuotuisen julkaisusyklin, ja tämä ehdotus on hyväksytty.

Vuotuinen julkaisusykli tarkoittaa vähemmän ominaisuuksia julkaisua kohden, mutta se tarkoittaa myös nopeampaa palautetta ominaisuuksien testauksesta, vähemmän mahdollisia rikkovia muutoksia jokaiselle julkaisulle ja siten enemmän kannustimia käyttäjille ja Linux-jakelupäälliköille päivittää Python useammin. Se tarkoittaa myös sitä, että kehitystyön loppupuolella ehdotetut uudet ominaisuudet eivät kestä niin kauan kuin uudet julkaisut.

Uusi aikajana tarkoittaa, että Python 3.9 toimitetaan lokakuussa 2020. Python 3.10 aloitti virallisesti alfa-ajan edeltävän kehityksen 19. toukokuuta 2020, siirtyy alfa-kehitysvaiheeseen, kun Python 3.9 toimitetaan, ja toimitetaan lokakuussa 2021. Tulevat Python-julkaisut seuraavat sama malli.

Python nopeutuu oletusarvoisesti

Jokaisella Python-versiolla on suorituskyvyn parannuksia edelliseen versioon verrattuna. Python 3.9 sisältää kaksi isoa parannusta, jotka parantavat suorituskykyä ilman, että joudutaan muuttamaan olemassa olevaa koodia.

Ensimmäinen parannus edellyttää vectorcall Python 3.8: ssa käyttöön otettu protokolla. vectorcall tekee monia yleisiä toimintopuheluja nopeammin minimoimalla tai poistamalla puhelulle luodut väliaikaiset objektit. Python 3.9: ssä useita Python-sisäänrakennuksia - alue, tuple, set, frozenset, list, dict - käyttö vectorcall sisäisesti nopeuttamaan toteutusta.

Toinen suuri suorituskyvyn parantaja on Python-lähdekoodin jäsentäminen tehokkaammin. CPython-ajonaikaisen uuden jäsentimen tarkoituksena ei ole ollut käsitellä suorituskykyongelmia, vaan pikemminkin käsitellä alkuperäisen jäsentimen sisäisiä epäjohdonmukaisuuksia. Tärkeä etu on kuitenkin nopeampi jäsentäminen, erityisesti suurten koodimäärien kohdalla.

Lisää Python-merkkijono- ja sanakirjatoimintoja

Python helpottaa yleisten tietotyyppien käsittelyä, ja Python 3.9 laajentaa tätä helppoutta uusilla ominaisuuksilla merkkijonoille ja sanakirjoille. Merkkijonoja varten on olemassa uusia menetelmiä etuliitteiden ja loppuliitteiden poistamiseksi. Toiminnot, jotka ovat pitkään vaatineet paljon manuaalista työtä. Sanakirjoissa on nyt liitto-operaattoreita, yksi yhdistää kaksi sanakirjaa uuteen sanakirjaan ja yksi päivittämään yhden sanakirjan sisältö toiseen sanakirjaan.

Sisustajat menettävät joitain rajoituksia

Sisustajien avulla voit kääriä Python-toimintoja muuttamaan heidän käyttäytymistään ohjelmallisesti. Aikaisemmin sisustajat voivat koostua vain @ -merkistä, nimestä (esim. func) tai pisteviiva (toimintamenetelmä) ja valinnaisesti yksi puhelu (funktiomenetelmä (arg1, arg2)). Python 3.9: n kanssa sisustajat voivat nyt koostua mistä tahansa kelvollisesta lausekkeesta.

Yksi pitkäaikainen tapa kiertää tämä rajoitus oli luoda funktio tai lambda-ilmaisu, joka olisi monimutkaisempi ilmaisu käytettynä sisustajana. Nyt mikä tahansa lauseke toimii, jos se tuottaa jotain, joka voi toimia sisustajana.

Uudet Python-tyyppiset toiminnot

Muutaman viimeisen version aikana Python on laajentanut tyyppivihjeiden tukea. Tämä tapahtuu pääasiassa likojen ja koodintarkistajien vuoksi; tyyppejä ei pakoteta suorituksen aikana CPythonissa, eikä Pythonista ole tarkoitus tehdä staattisesti kirjoitettua kieltä. Mutta tyyppivihjeet ovat tehokas työkalu yhdenmukaisuuden varmistamiseksi suurissa koodipohjoissa, joten Python-koodi voi silti hyötyä tyyppivihjeiden käytöstä.

Kaksi uutta ominaisuusviittausta ja tyyppimerkintöjä pääsi Python 3.9: ään. Yhdessä kirjoitusvihjeet kokoelmien - esimerkiksi luetteloiden ja sanakirjojen - sisällölle ovat nyt saatavilla Pythonissa natiivisti. Tämä tarkoittaa, että voit esimerkiksi kuvata luettelon nimellä luettelo [int] - luettelo kokonaisluvuista - ilman kirjoittaminen kirjasto tekemään sen.

Toinen lisäys Pythonin kirjoitusmekanismeihin on joustavat toiminnot ja muutettavissa olevat merkinnät. Tämä sallii Merkitty type kuvaamaan tyyppiä käyttämällä metatietoja, jotka voidaan tutkia etukäteen (nukkaustyökaluilla) tai ajon aikana. Esimerkiksi, Kommentoitu [int, ctype ("char")] Voidaan käyttää kuvaamaan kokonaislukua, jota tulisi pitää a: na hiiltyä kirjoita C. Oletusarvoisesti Python ei tekisi mitään tällaisen merkinnän kanssa, mutta koodinpoistajat voisivat käyttää sitä.

Parannuksia Pythonin sisäisiin osiin

Pythonin sisäosan puhdistaminen, puhdistaminen ja nykyaikaistaminen on jatkuva aloite Pythonin kehittäjille, ja Python 3.9: ssä on muutamia muutoksia.

Ensimmäinen on uudelleensuunnittelu tavasta, jolla moduulit ovat vuorovaikutuksessa tuontikoneiden kanssa. C-muodossa kirjoitetut Python-laajennusmoduulit voivat nyt käyttää uutta latausmekanismia, joka saa ne käyttäytymään enemmän kuin tavalliset Python-moduulit tuotuna. Useat Pythonin vakiokirjaston moduulit tukevat tätä toimintaa: _abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operaattori, resurssi, aika, _weakref. Uusi latausmekanismi antaa paitsi Pythonille mahdollisuuden käsitellä laajennusmoduuleja joustavammin, mutta mahdollistaa myös uudet ominaisuudet, kuten edistyneet koukutustavat.

Toinen siivousaloite on vakaa sisäinen ABy CPythonille, ja se on taattu Python 3: n koko käyttöiän ajan. Historiallisesti jokainen Pythonin merkittävä versio on ollut ABI-yhteensopimaton aiempien versioiden kanssa, mikä edellyttää laajennusmoduulien kääntämistä uudelleen jokaiselle uudelle versiolle. Tästä eteenpäin kaikki vakaa ABI: tä käyttävät laajennusmoduulit toimivat kaikissa Python-versioissa. Python 3.9: n kanssa seuraavat vakiokirjaston moduulit käyttävät vakaa ABI: tä: audioop, ast, grp, _hashlib, pwd, _posixsubprocess, satunnainen, valitse, struct, termios, zlib.

Muut muutokset Python 3.9: ssä

  • Pythonin vakiokirjasto tukee nyt IANA-aikavyöhyketietokantaa. Mainittu tietokanta on hyvin hoidettu ja sitä käytetään laajalti, ja sillä on suora tapa käyttää sitä Pythonin datetime-kirjastossa, mikä on suuri, aikaa säästävä.
  • Uudet merkkijonomenetelmät mahdollistavat etu- ja loppuliitteiden helpon poistamisen. Tämä on yksi niistä tavallisista arjen käyttöskenaarioista, jotka vaativat hieman liikaa kattilaa kuin tuntui tarpeelliselta. Uusi .removeprefix () ja .removesuffix () method palauttaa muokatun kopion merkkijonosta, josta on vähennetty kyseinen etuliite tai jälkiliite, jos ne ovat merkkijonossa.

Kuinka tehdä enemmän Pythonilla

  • 4 Python-tyyppistä tarkistinta pitämään koodisi puhtaana
  • Python-tyyli: 5 työkalua Python-koodin puhdistamiseen
  • Kuinka työskennellä Python-luettelotietotyypin kanssa
  • Kuinka pakata Python-sovellukset BeeWare-salkulla
  • Kuinka ajaa Anacondaa vierekkäin muiden pythonien kanssa
  • Kuinka käyttää Python-tietoluokkia
  • Aloita asynkronointi Pythonissa
  • Asyncion käyttäminen Pythonissa
  • 3 vaihetta Pythonin asynkroniseen huoltoon
  • Kuinka käyttää PyInstalleria Python-suoritettavien tiedostojen luomiseen
  • Cython-opetusohjelma: Kuinka nopeuttaa Pythonia
  • Kuinka asentaa Python älykkäästi
  • Kuinka hallita Python-projekteja Poetryn avulla
  • Kuinka hallita Python-projekteja Pipenv: llä
  • Virtualenv ja venv: Python-virtuaaliympäristöt selitetty
  • Python virtualenv ja venv do and don'ts
  • Python-ketjuttaminen ja aliprosessit on selitetty
  • Kuinka käyttää Python-virheenkorjainta
  • Kuinka käyttää timeit Python-koodin profilointiin
  • CProfilen käyttäminen Python-koodin profilointiin
  • Kuinka muuntaa Python JavaScriptiksi (ja takaisin)