Python 3.6¶
Python 3.6 beta 1 julkaistiin 12.9.2016, ja yhteenveto uusista ominaisuuksista löytyy täältä:
Uudet syntaksiominaisuudet |
Tila |
|
Literaalien merkkijonomuotoilu |
Valmis |
|
Alaviivat numeroliteraaleissa |
Valmis |
|
Asynkroniset generaattorit |
||
Muuttujien annotaatioiden syntaksi (väliaikainen) |
Valmis |
|
Asynkroniset läpikäynnit (comprehension) |
||
Uudet sisäänrakennetut ominaisuudet |
||
kwargs-argumenttien järjestyksen säilyttäminen funktiossa |
||
Luokan luomisen yksinkertaisempi mukauttaminen |
Osittainen [1] |
|
Luokan attribuuttien määrittelyjärjestyksen säilyttäminen |
||
Vakiokirjaston muutokset |
||
Paikallisen ajan yksiselitteistäminen |
||
secrets-moduulin lisääminen vakiokirjastoon |
||
Tiedostojärjestelmän polkuprotokollan lisääminen |
||
CPythonin sisäiset toiminnot |
||
Yksityisen version lisääminen sanakirjaan (dict) |
Ei toteuteta |
|
Kehyksen evaluointirajapinnan lisääminen CPythoniin |
||
Linux/Windows-muutokset |
||
|
||
Windowsin konsolin merkistökoodauksen muuttaminen UTF-8:ksi |
||
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-tyypin loppuun käytetyt iteraattorit pysyvät nyt loppuun käytettyinä, vaikka iteroitavaa taulukkoa laajennettaisiin. |
|
b2a_base64()-funktio hyväksyy nyt valinnaisen newline-avainsana-argumentin, jolla voidaan hallita, lisätäänkö rivinvaihtomerkki palautusarvoon |
Valmis |
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 |
|
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. |
|
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.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. |
|
Uusi vakio math.tau (τ) on lisätty |
Valmis |
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. |
|
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ä. |
|
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 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. |
|
tukee nyt IEEE 754 -puolitarkkuuden liukulukuja ’e’-muotomäärittimen kautta. |
|
Uusi getfilesystemencodeerrors()-funktio palauttaa Unicode-tiedostonimien ja tavutiedostonimien välisessä muunnoksessa käytettävän virhetilan nimen. |
|
compress()- ja decompress()-funktiot hyväksyvät nyt avainsana-argumentteja |
|
Huomautukset