Python 3.6

Python 3.6 beta 1 julkaistiin 12.9.2016, ja yhteenveto uusista ominaisuuksista löytyy täältä:

Uudet syntaksiominaisuudet

Tila

PEP 498

Literaalien merkkijonomuotoilu

Valmis

PEP 515

Alaviivat numeroliteraaleissa

Valmis

PEP 525

Asynkroniset generaattorit

PEP 526

Muuttujien annotaatioiden syntaksi (väliaikainen)

Valmis

PEP 530

Asynkroniset läpikäynnit (comprehension)

Uudet sisäänrakennetut ominaisuudet

PEP 468

kwargs-argumenttien järjestyksen säilyttäminen funktiossa

PEP 487

Luokan luomisen yksinkertaisempi mukauttaminen

Osittainen [1]

PEP 520

Luokan attribuuttien määrittelyjärjestyksen säilyttäminen

Vakiokirjaston muutokset

PEP 495

Paikallisen ajan yksiselitteistäminen

PEP 506

secrets-moduulin lisääminen vakiokirjastoon

PEP 519

Tiedostojärjestelmän polkuprotokollan lisääminen

CPythonin sisäiset toiminnot

PEP 509

Yksityisen version lisääminen sanakirjaan (dict)

Ei toteuteta

PEP 523

Kehyksen evaluointirajapinnan lisääminen CPythoniin

Linux/Windows-muutokset

PEP 524

os.urandom()-funktion estävä toiminta Linuxissa (järjestelmän käynnistyksen aikana)

PEP 528

Windowsin konsolin merkistökoodauksen muuttaminen UTF-8:ksi

PEP 529

Windowsin tiedostojärjestelmän merkistökoodauksen muuttaminen UTF-8:ksi

Muut kielen muutokset:

global- tai nonlocal-lauseen on nyt esiinnyttävä tekstissä ennen kyseisen nimen ensimmäistä käyttöä samassa näkyvyysalueessa. Aiemmin tämä oli SyntaxWarning-varoitus.

Erikoismetodin asettaminen arvoon None on nyt mahdollista osoittamaan, että vastaava operaatio ei ole käytettävissä. Esimerkiksi jos luokka asettaa __iter__()-metodin arvoon None, luokka ei ole iteroitavissa.

Pitkät jaksot toistuvia jäljitysrivejä lyhennetään nyt muotoon [Previous line repeated {count} more times]

Tuonti (import) nostaa nyt uuden poikkeuksen ModuleNotFoundError, kun se ei löydä moduulia. Koodi, joka tällä hetkellä tarkistaa ImportError-poikkeuksen (try-except-rakenteessa), toimii edelleen.

Nolla-argumenttiseen super()-funktioon nojaavat luokkametodit toimivat nyt oikein, kun niitä kutsutaan metaclass-metodeista luokan luomisen aikana.

Sisäänrakennettujen moduulien muutokset:

array

array.array-tyypin loppuun käytetyt iteraattorit pysyvät nyt loppuun käytettyinä, vaikka iteroitavaa taulukkoa laajennettaisiin.

binascii

b2a_base64()-funktio hyväksyy nyt valinnaisen newline-avainsana-argumentin, jolla voidaan hallita, lisätäänkö rivinvaihtomerkki palautusarvoon

Valmis

cmath

Uusi vakio cmath.tau (τ) on lisätty

Uudet vakiot: cmath.inf ja cmath.nan vastaamaan vakioita math.inf ja math.nan, sekä cmath.infj ja cmath.nanj vastaamaan kompleksiluvun repr-esityksen käyttämää muotoa

collections

Uusi abstrakti perusluokka Collection on lisätty edustamaan kooltaan tunnettuja iteroitavia säiliöluokkia

Uusi abstrakti perusluokka Reversible edustaa iteroitavia luokkia, jotka tarjoavat myös __reversed__()-metodin.

Uusi abstrakti perusluokka AsyncGenerator edustaa asynkronisia generaattoreita.

namedtuple()-funktio hyväksyy nyt valinnaisen module-avainsana-argumentin, jota käytetään määriteltynä palautetun nimetyn monikon (tuple) luokan __module__-attribuuttina.

namedtuple()-funktion verbose- ja rename-argumentit ovat nyt vain avainsana-argumentteja.

Rekursiiviset collections.deque-instanssit voidaan nyt pickle-sarjallistaa.

hashlib

BLAKE2-tiivistefunktiot lisättiin moduuliin. blake2b() ja blake2s() ovat aina käytettävissä ja tukevat BLAKE2:n koko ominaisuusvalikoimaa.

SHA-3-tiivistefunktiot sha3_224(), sha3_256(), sha3_384(), sha3_512() sekä SHAKE-tiivistefunktiot shake_128() ja shake_256() lisättiin.

Salasanapohjainen avaimenmuodostusfunktio scrypt() on nyt käytettävissä OpenSSL 1.1.0:n ja uudempien kanssa.

json

json.load() ja json.loads() tukevat nyt binäärisyötettä. Koodattu JSON tulisi esittää käyttäen joko UTF-8-, UTF-16- tai UTF-32-koodausta.

math

Uusi vakio math.tau (τ) on lisätty

Valmis

os

Uusi close()-metodi mahdollistaa scandir()-iteraattorin nimenomaisen sulkemisen. scandir()-iteraattori tukee nyt kontekstinhallintaprotokollaa.

Linuxissa os.urandom() estyy nyt, kunnes järjestelmän urandom-entropia-allas on alustettu, mikä parantaa turvallisuutta.

Linuxin getrandom()-järjestelmäkutsu (hae satunnaisia tavuja) on nyt saatavilla uutena os.getrandom()-funktiona.

re

Lisätty tuki modifier span -alueille säännöllisissä lausekkeissa. Esimerkkejä: ’(?i:p)ython’ täsmää merkkijonoihin ’python’ ja ’Python’, mutta ei merkkijonoon ’PYTHON’; ’(?i)g(?-i:v)r’ täsmää merkkijonoihin ’GvR’ ja ’gvr’, mutta ei merkkijonoon ’GVR’.

Match-objektin ryhmiin voidaan nyt päästä käsiksi __getitem__-metodilla, joka vastaa group()-metodia. Näin ollen mo[’name’] vastaa nyt ilmausta mo.group(’name’).

Match-objektit tukevat nyt indeksin kaltaisia objekteja ryhmäindekseinä.

socket

ioctl()-funktio tukee nyt SIO_LOOPBACK_FAST_PATH-ohjauskoodia.

getsockopt()-vakiot SO_DOMAIN, SO_PROTOCOL, SO_PEERSEC ja SO_PASSSEC ovat nyt tuettuja.

setsockopt() tukee nyt muotoa setsockopt(level, optname, None, optlen: int).

socket-moduuli tukee nyt osoiteperhettä AF_ALG Linux-ytimen krypto-API:n kanssa toimimiseen. ALG_, SOL_ALG ja sendmsg_afalg() lisättiin.

Uudet Linux-vakiot TCP_USER_TIMEOUT ja TCP_CONGESTION lisättiin.

ssl

ssl tukee OpenSSL 1.1.0:aa. Pienin suositeltu versio on 1.0.2.

3DES on poistettu oletussalauspaketeista ja ChaCha20 Poly1305 -salauspaketit on lisätty.

SSLContext-objektilla on nyt parempi oletuskokoonpano asetuksille ja salauksille.

SSL-istunto voidaan kopioida yhdestä asiakaspuolen yhteydestä toiseen uudella SSLSession-luokalla. TLS-istunnon jatkaminen voi nopeuttaa alkuperäistä kättelyä, vähentää viivettä ja parantaa suorituskykyä.

Uudella get_ciphers()-metodilla voidaan hakea luettelo käytössä olevista salauksista salausprioriteetin mukaisessa järjestyksessä.

Kaikki vakiot ja liput on muunnettu tyypeiksi IntEnum ja IntFlags.

Palvelin- ja asiakaspuolikohtaiset TLS-protokollat lisättiin SSLContext-objektille.

Lisätty SSLContext.post_handshake_auth TLS 1.3:n kättelynjälkeisen todennuksen käyttöönottoon ja ssl.SSLSocket.verify_client_post_handshake() sen aloittamiseen.

struct

tukee nyt IEEE 754 -puolitarkkuuden liukulukuja ’e’-muotomäärittimen kautta.

sys

Uusi getfilesystemencodeerrors()-funktio palauttaa Unicode-tiedostonimien ja tavutiedostonimien välisessä muunnoksessa käytettävän virhetilan nimen.

zlib

compress()- ja decompress()-funktiot hyväksyvät nyt avainsana-argumentteja

Huomautukset