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