Python 3.5

Alla on lista Python 3.5:n viimeistellyistä/hyväksytyistä PEP-dokumenteista ryhmiteltynä niiden MicroPythoniin kohdistuvan vaikutuksen mukaan.

Syntaksin laajennukset

Tila

PEP 448

Lisää purkamisen yleistyksiä

Osittainen

PEP 465

Uusi matriisikertolaskuoperaattori

Valmis

PEP 492

Korutiinit syntakseilla async ja await

Valmis

Suoritusympäristön laajennukset ja muutokset

PEP 461

%-muotoilu binäärimerkkijonoille

Valmis

PEP 475

Virheellä EINTR epäonnistuvien järjestelmäkutsujen uudelleenyrittäminen

Valmis

PEP 479

Muutetaan StopIteration-käsittelyä generaattorien sisällä

Valmis

Vakiokirjaston muutokset

PEP 471

os.scandir()

PEP 485

math.isclose(), funktio likimääräisen yhtäsuuruuden testaamiseen

Valmis

Sekalaiset muutokset

PEP 441

Parannettu Python-zip-sovellustuki

PEP 486

Tehdään Python Launcher tietoiseksi virtuaaliympäristöistä

Ei oleellinen

PEP 484

Tyyppivihjeet (vain neuvoa-antavia)

Valmis [1]

PEP 488

PYO-tiedostojen poistaminen

Ei oleellinen

PEP 489

Laajennusmoduulien latauksen uudelleensuunnittelu

Muut kielimuutokset:

Lisätty on namereplace-virheenkäsittelijät. backslashreplace-virheenkäsittelijät toimivat nyt myös purkamisessa ja kääntämisessä.

Property-objektien dokumentaatiomerkkijonot ovat nyt kirjoitettavissa. Tämä on erityisen hyödyllistä collections.namedtuple()-dokumentaatiomerkkijonoille

Suhteellisia tuonteja sisältävät kehätuonnit ovat nyt tuettuja.

Uudet moduulit:

Muutokset sisäänrakennettuihin moduuleihin:

collections

OrderedDict-luokka on nyt toteutettu C-kielellä, mikä tekee siitä 4-100 kertaa nopeamman.

Näkymät OrderedDict.items() , OrderedDict.keys() ja OrderedDict.values() tukevat nyt reversed()-iterointia.

The deque class now defines index(), insert(), and copy(), and supports the + and * operators.

namedtuple()-funktion tuottamia dokumentaatiomerkkijonoja voidaan nyt päivittää.

UserString-luokka toteuttaa nyt metodit __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable() ja maketrans() vastaamaan str-tyypin vastaavia metodeja.

heapq

Alkioiden vertailua funktiossa merge() voidaan nyt mukauttaa välittämällä avainfunktio uudessa valinnaisessa key-avainsana-argumentissa, ja uudella valinnaisella reverse-avainsana-argumentilla voidaan kääntää alkioiden vertailu

io

Uusi metodi BufferedIOBase.readinto1(), joka käyttää enintään yhtä kutsua taustalla olevan raakavirran metodeihin RawIOBase.read() tai RawIOBase.readinto()

json

JSON-dekooderi nostaa nyt poikkeuksen JSONDecodeError poikkeuksen ValueError sijaan tarjotakseen parempaa kontekstitietoa virheestä.

math

math-moduuliin on lisätty kaksi uutta vakiota: inf ja nan.

Valmis

Uusi funktio isclose() tarjoaa tavan testata likimääräistä yhtäsuuruutta.

Lisätty on uusi funktio gcd(). Funktio fractions.gcd() on nyt vanhennettu.

os

Lisätty on uusi funktio scandir(), joka palauttaa DirEntry-objektien iteraattorin.

Funktio urandom() käyttää nyt getrandom()-järjestelmäkutsua Linux 3.17:ssä ja uudemmissa sekä getentropy()-kutsua OpenBSD 5.6:ssa ja uudemmissa, mikä poistaa tarpeen käyttää /dev/urandom-laitetta ja välttää mahdollisesta tiedostokuvaajien loppumisesta johtuvat virheet.

Uudet funktiot get_blocking() ja set_blocking() mahdollistavat tiedostokuvaajan estotilan (O_NONBLOCK) lukemisen ja asettamisen.

On olemassa uusi funktio os.path.commonpath(), joka palauttaa kunkin välitetyn polkunimen pisimmän yhteisen alipolun

re

Viittaukset ja ehdolliset viittaukset kiinteäpituisiin ryhmiin ovat nyt sallittuja lookbehind-väittämissä

Säännöllisissä lausekkeissa kaappaavien ryhmien määrää ei enää ole rajoitettu 100:aan.

Funktiot sub() ja subn() korvaavat nyt täsmäämättömät ryhmät tyhjillä merkkijonoilla poikkeuksen nostamisen sijaan.

Poikkeuksilla re.error on uudet attribuutit msg, pattern, pos, lineno ja colno, jotka tarjoavat parempaa kontekstitietoa virheestä

socket

Aikakatkaisuja käyttävät funktiot käyttävät nyt monotonista kelloa järjestelmäkellon sijaan.

Uusi metodi socket.sendfile() mahdollistaa tiedoston lähettämisen soketin kautta käyttämällä suorituskykyistä os.sendfile()-funktiota UNIXissa, mikä tekee lähetyksistä 2-3 kertaa nopeampia kuin pelkkää socket.send()-metodia käytettäessä

Metodi socket.sendall() ei enää nollaa soketin aikakatkaisua joka kerta, kun tavuja vastaanotetaan tai lähetetään. Soketin aikakatkaisu on nyt suurin kokonaiskesto kaiken datan lähettämiselle.

Metodin socket.listen() backlog-argumentti on nyt valinnainen. Oletuksena se on asetettu arvoon SOMAXCONN tai 128, riippuen siitä, kumpi on pienempi.

Valmis

ssl

Memory BIO -tuki

Application-Layer Protocol Negotiation -tuki

On olemassa uusi metodi SSLSocket.version() käytössä olevan todellisen protokollaversion kyselemiseen.

SSLSocket-luokka toteuttaa nyt metodin SSLSocket.sendfile().

Metodi SSLSocket.send() nostaa nyt joko poikkeuksen ssl.SSLWantReadError tai ssl.SSLWantWriteError estävässä tilassa olemattomalla soketilla, jos operaatio estyisi. Aiemmin se palautti arvon 0.

Funktio cert_time_to_seconds() tulkitsee nyt syöteajan UTC-aikana eikä paikallisena aikana, RFC 5280:n mukaisesti. Lisäksi paluuarvo on aina int.

Uudet metodit SSLObject.shared_ciphers() ja SSLSocket.shared_ciphers() palauttavat listan salauksista, jotka asiakas lähetti kättelyn aikana.

SSLSocket-luokan metodit SSLSocket.do_handshake(), SSLSocket.read(), SSLSocket.shutdown() ja SSLSocket.write() eivät enää nollaa soketin aikakatkaisua joka kerta, kun tavuja vastaanotetaan tai lähetetään.

Funktio match_hostname() tukee nyt IP-osoitteiden täsmäystä.

sys

Uusi funktio set_coroutine_wrapper() mahdollistaa globaalin koukun asettamisen, jota kutsutaan aina, kun async def -funktio luo korutiiniobjektin. Vastaavalla get_coroutine_wrapper()-funktiolla voidaan hakea tällä hetkellä asetettu kääre.

Uudella funktiolla is_finalizing() voidaan tarkistaa, onko Python-tulkki sulkeutumassa.

time

Funktio monotonic() on nyt aina käytettävissä

Huomautukset