Python 3.5

Mai jos este o listă a PEP-urilor finalizate/acceptate pentru Python 3.5, grupate în funcție de impactul lor asupra MicroPython.

Extensii ale sintaxei

Stare

PEP 448

Generalizări suplimentare ale despachetării

Parțial

PEP 465

Un nou operator de înmulțire matricială

Complet

PEP 492

Corutine cu sintaxa async și await

Complet

Extensii și modificări ale mediului de execuție

PEP 461

Formatare cu % pentru șiruri binare

Complet

PEP 475

Reîncercarea apelurilor de sistem care eșuează cu EINTR

Complet

PEP 479

Modificarea gestionării StopIteration în interiorul generatoarelor

Complet

Modificări ale bibliotecii standard

PEP 471

os.scandir()

PEP 485

math.isclose(), o funcție pentru testarea egalității aproximative

Complet

Modificări diverse

PEP 441

Suport îmbunătățit pentru aplicații zip Python

PEP 486

Conștientizarea de către Python Launcher a mediilor virtuale

Nu este relevant

PEP 484

Sugestii de tip (doar orientative)

Complet [1]

PEP 488

Eliminarea fișierelor PYO

Nu este relevant

PEP 489

Reproiectarea încărcării modulelor de extensie

Alte modificări ale limbajului:

Au fost adăugate gestionarele de erori namereplace. Gestionarele de erori backslashreplace funcționează acum cu decodificarea și traducerea.

Șirurile de documentație (docstrings) ale proprietăților pot fi acum scrise. Acest lucru este util în special pentru șirurile de documentație ale collections.namedtuple()

Importurile circulare care implică importuri relative sunt acum suportate.

Module noi:

Modificări ale modulelor încorporate:

collections

Clasa OrderedDict este acum implementată în C, ceea ce o face de 4 până la 100 de ori mai rapidă.

Vizualizările OrderedDict.items(), OrderedDict.keys(), OrderedDict.values() suportă acum iterarea cu reversed().

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

Șirurile de documentație produse de namedtuple() pot fi acum actualizate.

Clasa UserString implementează acum metodele __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable() și maketrans() pentru a corespunde metodelor echivalente ale str.

heapq

Compararea elementelor în merge() poate fi acum personalizată prin transmiterea unei funcții cheie într-un nou argument-cheie opțional key, iar un nou argument-cheie opțional reverse poate fi folosit pentru a inversa compararea elementelor

io

O nouă metodă BufferedIOBase.readinto1(), care folosește cel mult un apel la metodele RawIOBase.read() sau RawIOBase.readinto() ale fluxului brut subiacent

json

Decodificatorul JSON generează acum JSONDecodeError în loc de ValueError pentru a oferi informații de context mai bune despre eroare.

math

Au fost adăugate două noi constante la modulul math: inf și nan.

Complet

O nouă funcție isclose() oferă o modalitate de a testa egalitatea aproximativă.

A fost adăugată o nouă funcție gcd(). Funcția fractions.gcd() este acum depreciată.

os

A fost adăugată noua funcție scandir(), care returnează un iterator de obiecte DirEntry.

Funcția urandom() folosește acum apelul de sistem getrandom() pe Linux 3.17 sau mai nou și getentropy() pe OpenBSD 5.6 și mai nou, eliminând necesitatea de a folosi /dev/urandom și evitând eșecurile cauzate de potențiala epuizare a descriptorilor de fișier.

Noile funcții get_blocking() și set_blocking() permit obținerea și setarea modului de blocare al unui descriptor de fișier (O_NONBLOCK.)

Există o nouă funcție os.path.commonpath() care returnează cea mai lungă sub-cale comună a fiecărui nume de cale transmis

re

Referințele și referințele condiționate către grupuri cu lungime fixă sunt acum permise în aserțiunile lookbehind

Numărul de grupuri de captură din expresiile regulate nu mai este limitat la 100.

Funcțiile sub() și subn() înlocuiesc acum grupurile nepotrivite cu șiruri goale în loc să genereze o excepție.

Excepțiile re.error au noi atribute, msg, pattern, pos, lineno și colno, care oferă informații de context mai bune despre eroare

socket

Funcțiile cu timeout-uri folosesc acum un ceas monoton, în loc de un ceas de sistem.

O nouă metodă socket.sendfile() permite trimiterea unui fișier printr-un socket folosind funcția performantă os.sendfile() pe UNIX, ceea ce face ca încărcările să fie de 2 până la 3 ori mai rapide decât atunci când se folosește simplu socket.send()

Metoda socket.sendall() nu mai resetează timeout-ul socket-ului de fiecare dată când sunt primiți sau trimiși octeți. Timeout-ul socket-ului reprezintă acum durata totală maximă pentru trimiterea tuturor datelor.

Argumentul backlog al metodei socket.listen() este acum opțional. În mod implicit, este setat la SOMAXCONN sau la 128, oricare dintre acestea este mai mic.

Complet

ssl

Suport pentru Memory BIO

Suport pentru Application-Layer Protocol Negotiation

Există o nouă metodă SSLSocket.version() pentru a interoga versiunea reală de protocol în uz.

Clasa SSLSocket implementează acum o metodă SSLSocket.sendfile().

Metoda SSLSocket.send() generează acum fie excepția ssl.SSLWantReadError, fie ssl.SSLWantWriteError pe un socket neblocant dacă operația ar bloca. Anterior, ar fi returnat 0.

Funcția cert_time_to_seconds() interpretează acum timpul de intrare ca UTC, nu ca timp local, conform RFC 5280. În plus, valoarea returnată este întotdeauna un int.

Noile metode SSLObject.shared_ciphers() și SSLSocket.shared_ciphers() returnează lista cifrurilor trimise de client în timpul negocierii.

Metodele SSLSocket.do_handshake(), SSLSocket.read(), SSLSocket.shutdown() și SSLSocket.write() ale clasei SSLSocket nu mai resetează timeout-ul socket-ului de fiecare dată când sunt primiți sau trimiși octeți.

Funcția match_hostname() suportă acum potrivirea adreselor IP.

sys

O nouă funcție set_coroutine_wrapper() permite setarea unui hook global care va fi apelat ori de câte ori un obiect corutină este creat de o funcție async def. O funcție corespunzătoare get_coroutine_wrapper() poate fi folosită pentru a obține un wrapper setat curent.

O nouă funcție is_finalizing() poate fi folosită pentru a verifica dacă interpretorul Python se închide.

time

Funcția monotonic() este acum disponibilă întotdeauna

Note