Python 3.6¶
Python 3.6 beta 1 izdan je 12. rujna 2016., a sažetak novih značajki može se pronaći ovdje:
Nove sintaktičke značajke |
Status |
|
Oblikovanje doslovnih nizova (Literal String Formatting) |
Dovršeno |
|
Donje crte u brojčanim literalima |
Dovršeno |
|
Asinkroni generatori |
||
Sintaksa za anotacije varijabli (privremeno) |
Dovršeno |
|
Asinkrone komprehenzije |
||
Nove ugrađene značajke |
||
Očuvanje redoslijeda kwargs u funkciji |
||
Jednostavnija prilagodba stvaranja klasa |
Djelomično [1] |
|
Očuvanje redoslijeda definiranja atributa klase |
||
Promjene standardne biblioteke |
||
Razrješavanje dvosmislenosti lokalnog vremena |
||
Dodavanje modula secrets u standardnu biblioteku |
||
Dodavanje protokola za putanje datotečnog sustava |
||
Interni dijelovi CPythona |
||
Dodavanje privatne verzije u dict |
Neće se napraviti |
|
Dodavanje API-ja za evaluaciju okvira (frame) u CPython |
||
Promjene za Linux/Windows |
||
Učiniti |
||
Promjena kodiranja Windows konzole na UTF-8 |
||
Promjena kodiranja Windows datotečnog sustava na UTF-8 |
||
Ostale jezične promjene:
Naredba global ili nonlocal sada se mora tekstualno pojaviti prije prve upotrebe pogođenog imena u istom dosegu. Prije je to bilo SyntaxWarning. |
|
Sada je moguće postaviti posebnu metodu na None kako bi se naznačilo da odgovarajuća operacija nije dostupna. Na primjer, ako klasa postavi __iter__() na None, klasa nije iterabilna. |
|
Duge sekvence ponovljenih redaka praćenja (traceback) sada se skraćuju kao [Previous line repeated {count} more times] |
|
Uvoz sada izaziva novu iznimku ModuleNotFoundError kada ne može pronaći modul. Kod koji trenutno provjerava ImportError (u try-except) i dalje će raditi. |
|
Metode klase koje se oslanjaju na super() bez argumenata sada će ispravno raditi kada se pozivaju iz metoda metaklase tijekom stvaranja klase. |
Promjene ugrađenih modula:
Iscrpljeni iteratori objekta array.array sada će ostati iscrpljeni čak i ako se iterirani niz proširi. |
|
Funkcija b2a_base64() sada prihvaća opcionalni ključni argument newline kojim se upravlja hoće li se znak za novi redak dodati povratnoj vrijednosti |
Dovršeno |
Dodana je nova konstanta cmath.tau (τ) |
|
Nove konstante: cmath.inf i cmath.nan koje odgovaraju math.inf i math.nan, te također cmath.infj i cmath.nanj koje odgovaraju formatu koji koristi complex repr |
|
Dodana je nova apstraktna bazna klasa Collection za predstavljanje klasa spremnika koji su iterabilni i imaju definiranu veličinu |
|
Nova apstraktna bazna klasa Reversible predstavlja iterabilne klase koje također pružaju metodu __reversed__(). |
|
Nova apstraktna bazna klasa AsyncGenerator predstavlja asinkrone generatore. |
|
Funkcija namedtuple() sada prihvaća opcionalni ključni argument module koji se, kada je naveden, koristi za atribut __module__ vraćene klase imenovane n-torke. |
|
Argumenti verbose i rename za namedtuple() sada su isključivo ključne riječi. |
|
Rekurzivne instance collections.deque sada se mogu serijalizirati (pickle). |
|
U modul su dodane BLAKE2 hash funkcije. blake2b() i blake2s() uvijek su dostupne i podržavaju cijeli skup značajki BLAKE2. |
|
Dodane su SHA-3 hash funkcije sha3_224(), sha3_256(), sha3_384(), sha3_512() te SHAKE hash funkcije shake_128() i shake_256(). |
|
Funkcija za izvođenje ključa na temelju lozinke scrypt() sada je dostupna uz OpenSSL 1.1.0 i novije. |
|
json.load() i json.loads() sada podržavaju binarni ulaz. Kodirani JSON treba biti predstavljen pomoću UTF-8, UTF-16 ili UTF-32. |
|
Dodana je nova konstanta math.tau (τ) |
Dovršeno |
Nova metoda close() omogućuje eksplicitno zatvaranje iteratora scandir(). Iterator scandir() sada podržava protokol upravitelja konteksta. |
|
Na Linuxu os.urandom() sada blokira dok se entropijski bazen sustava urandom ne inicijalizira radi povećanja sigurnosti. |
|
Linux sistemski poziv getrandom() (dohvat nasumičnih bajtova) sada je izložen kao nova funkcija os.getrandom(). |
|
Dodana je podrška za raspone modifikatora u regularnim izrazima. Primjeri: ‘(?i:p)ython’ odgovara izrazima ‘python’ i ‘Python’, ali ne i ‘PYTHON’; ‘(?i)g(?-i:v)r’ odgovara izrazima ‘GvR’ i ‘gvr’, ali ne i ‘GVR’. |
|
Skupinama objekta podudaranja sada se može pristupiti pomoću __getitem__, što je ekvivalentno metodi group(). Dakle mo[‘name’] sada je ekvivalentno mo.group(‘name’). |
|
Objekti podudaranja sada podržavaju objekte slične indeksu kao indekse skupina. |
|
Funkcija ioctl() sada podržava kontrolni kod SIO_LOOPBACK_FAST_PATH. |
|
Konstante funkcije getsockopt() SO_DOMAIN, SO_PROTOCOL, SO_PEERSEC i SO_PASSSEC sada su podržane. |
|
setsockopt() sada podržava oblik setsockopt(level, optname, None, optlen: int). |
|
Modul socket sada podržava obitelj adresa AF_ALG za sučelje s kripto API-jem Linux jezgre. Dodani su ALG_, SOL_ALG i sendmsg_afalg(). |
|
Dodane su nove Linux konstante TCP_USER_TIMEOUT i TCP_CONGESTION. |
|
ssl podržava OpenSSL 1.1.0. Najmanja preporučena verzija je 1.0.2. |
|
3DES je uklonjen iz zadanih skupova šifri, a dodani su skupovi šifri ChaCha20 Poly1305. |
|
SSLContext ima bolju zadanu konfiguraciju za opcije i šifre. |
|
SSL sesija može se kopirati s jedne klijentske veze na drugu pomoću nove klase SSLSession. Nastavak TLS sesije može ubrzati početno rukovanje, smanjiti kašnjenje i poboljšati performanse. |
|
Nova metoda get_ciphers() može se koristiti za dohvat popisa omogućenih šifri prema redoslijedu prioriteta šifri. |
|
Sve konstante i zastavice pretvorene su u IntEnum i IntFlags. |
|
Dodani su TLS protokoli specifični za poslužitelj i klijenta za SSLContext. |
|
Dodano je SSLContext.post_handshake_auth za omogućavanje te ssl.SSLSocket.verify_client_post_handshake() za pokretanje autentifikacije nakon rukovanja u TLS-u 1.3. |
|
sada podržava IEEE 754 brojeve s pomičnim zarezom polovične preciznosti putem specifikatora formata ‘e’. |
|
Nova funkcija getfilesystemencodeerrors() vraća naziv načina obrade pogrešaka koji se koristi za pretvorbu između Unicode naziva datoteka i naziva datoteka u bajtovima. |
|
Funkcije compress() i decompress() sada prihvaćaju ključne argumente |
|
Napomene