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