Python 3.5

Ispod je popis finaliziranih/prihvaćenih PEP-ova za Python 3.5 grupiranih prema njihovom utjecaju na MicroPython.

Proširenja sintakse

Status

PEP 448

Dodatne generalizacije raspakiravanja

Djelomično

PEP 465

Novi operator za množenje matrica

Potpuno

PEP 492

Korutine sa sintaksom async i await

Potpuno

Proširenja i promjene izvođenja (runtime)

PEP 461

Oblikovanje s % za binarne nizove

Potpuno

PEP 475

Ponovno pokušavanje sistemskih poziva koji ne uspiju s EINTR

Potpuno

PEP 479

Promjena rukovanja StopIteration unutar generatora

Potpuno

Promjene standardne biblioteke

PEP 471

os.scandir()

PEP 485

math.isclose(), funkcija za testiranje približne jednakosti

Potpuno

Razne promjene

PEP 441

Poboljšana podrška za Python zip aplikacije

PEP 486

Upoznavanje Python Launchera s virtualnim okruženjima

Nije relevantno

PEP 484

Naznake tipova (samo savjetodavno)

Potpuno [1]

PEP 488

Uklanjanje PYO datoteka

Nije relevantno

PEP 489

Redizajn učitavanja modula proširenja

Ostale promjene jezika:

Dodani su rukovatelji pogreškama namereplace. Rukovatelji pogreškama backslashreplace sada rade s dekodiranjem i prevođenjem.

Docstringovi svojstava (property) sada su zapisivi. To je osobito korisno za docstringove iz collections.namedtuple()

Sada su podržani cirkularni uvozi koji uključuju relativne uvoze.

Novi moduli:

Promjene u ugrađenim modulima:

collections

Klasa OrderedDict sada je implementirana u jeziku C, što je čini 4 do 100 puta bržom.

Pogledi OrderedDict.items() , OrderedDict.keys() , OrderedDict.values() sada podržavaju iteraciju s reversed().

The deque class now defines index(), insert(), and copy(), and supports the + and * operators.

Docstringovi koje proizvodi namedtuple() sada se mogu ažurirati.

Klasa UserString sada implementira metode __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable() i maketrans() kako bi odgovarale odgovarajućim metodama klase str.

heapq

Usporedba elemenata u merge() sada se može prilagoditi prosljeđivanjem ključne funkcije u novom neobaveznom ključnom argumentu key, a novi neobavezni ključni argument reverse može se koristiti za obrnutu usporedbu elemenata

io

Nova metoda BufferedIOBase.readinto1(), koja koristi najviše jedan poziv metoda RawIOBase.read() ili RawIOBase.readinto() osnovnog sirovog toka

json

JSON dekoder sada podiže JSONDecodeError umjesto ValueError kako bi pružio bolje kontekstualne informacije o pogrešci.

math

Dvije nove konstante dodane su modulu math: inf i nan.

Potpuno

Nova funkcija isclose() pruža način za testiranje približne jednakosti.

Dodana je nova funkcija gcd(). Funkcija fractions.gcd() sada je zastarjela.

os

Dodana je nova funkcija scandir() koja vraća iterator objekata DirEntry.

Funkcija urandom() sada koristi sistemski poziv getrandom() na Linuxu 3.17 ili novijem, te getentropy() na OpenBSD-u 5.6 i novijem, čime se uklanja potreba za korištenjem /dev/urandom i izbjegavaju neuspjesi zbog potencijalnog iscrpljivanja opisnika datoteka.

Nove funkcije get_blocking() i set_blocking() omogućuju dohvaćanje i postavljanje blokirajućeg načina rada opisnika datoteke (O_NONBLOCK.)

Postoji nova funkcija os.path.commonpath() koja vraća najdulji zajednički podput svake proslijeđene putanje datoteke

re

Reference i uvjetne reference na grupe fiksne duljine sada su dopuštene u lookbehind tvrdnjama

Broj grupa za hvatanje u regularnim izrazima više nije ograničen na 100.

Funkcije sub() i subn() sada zamjenjuju nepodudarene grupe praznim nizovima umjesto podizanja iznimke.

Iznimke re.error imaju nove atribute: msg, pattern, pos, lineno i colno, koji pružaju bolje kontekstualne informacije o pogrešci

socket

Funkcije s vremenskim ograničenjima (timeout) sada koriste monotoni sat umjesto sistemskog sata.

Nova metoda socket.sendfile() omogućuje slanje datoteke preko utičnice korištenjem visokoučinkovite funkcije os.sendfile() na UNIX-u, što rezultira prijenosima 2 do 3 puta bržima nego pri korištenju običnog socket.send()

Metoda socket.sendall() više ne poništava vremensko ograničenje utičnice svaki put kada se bajtovi prime ili pošalju. Vremensko ograničenje utičnice sada je maksimalno ukupno trajanje za slanje svih podataka.

Argument backlog metode socket.listen() sada je neobavezan. Prema zadanim postavkama postavljen je na SOMAXCONN ili na 128, ovisno o tome što je manje.

Potpuno

ssl

Podrška za Memory BIO

Podrška za pregovaranje o protokolu aplikacijskog sloja (Application-Layer Protocol Negotiation)

Postoji nova metoda SSLSocket.version() za ispitivanje stvarne verzije protokola koja se koristi.

Klasa SSLSocket sada implementira metodu SSLSocket.sendfile().

Metoda SSLSocket.send() sada na neblokirajućoj utičnici podiže iznimku ssl.SSLWantReadError ili ssl.SSLWantWriteError ako bi operacija blokirala. Ranije bi vraćala 0.

Funkcija cert_time_to_seconds() sada tumači ulazno vrijeme kao UTC, a ne kao lokalno vrijeme, prema RFC 5280. Osim toga, povratna vrijednost uvijek je int.

Nove metode SSLObject.shared_ciphers() i SSLSocket.shared_ciphers() vraćaju popis šifri koje je klijent poslao tijekom rukovanja (handshake).

Metode SSLSocket.do_handshake(), SSLSocket.read(), SSLSocket.shutdown() i SSLSocket.write() klase SSLSocket više ne poništavaju vremensko ograničenje utičnice svaki put kada se bajtovi prime ili pošalju.

Funkcija match_hostname() sada podržava podudaranje IP adresa.

sys

Nova funkcija set_coroutine_wrapper() omogućuje postavljanje globalne kuke koja će se pozvati svaki put kada se stvori objekt korutine pomoću funkcije async def. Odgovarajuća funkcija get_coroutine_wrapper() može se koristiti za dohvaćanje trenutno postavljenog omotača.

Nova funkcija is_finalizing() može se koristiti za provjeru gasi li se Python interpreter.

time

Funkcija monotonic() sada je uvijek dostupna

Napomene