Python 3.6¶
Python 3.6 beta 1 a fost lansat pe 12 septembrie 2016, iar un rezumat al noilor funcționalități poate fi găsit aici:
Funcționalități noi de sintaxă |
Stare |
|
Formatarea literală a șirurilor de caractere |
Complet |
|
Caractere de subliniere în literalii numerici |
Complet |
|
Generatoare asincrone |
||
Sintaxă pentru adnotările variabilelor (provizoriu) |
Complet |
|
Comprehensiuni asincrone |
||
Funcționalități noi încorporate |
||
Păstrarea ordinii argumentelor kwargs într-o funcție |
||
Personalizare mai simplă a creării claselor |
Parțial [1] |
|
Păstrarea ordinii de definire a atributelor clasei |
||
Modificări ale bibliotecii standard |
||
Dezambiguizarea orei locale |
||
Adăugarea unui modul Secrets în biblioteca standard |
||
Adăugarea unui protocol pentru căile de sistem de fișiere |
||
Componentele interne CPython |
||
Adăugarea unei versiuni private la dict |
Nu se va face |
|
Adăugarea unui API de evaluare a cadrelor în CPython |
||
Modificări Linux/Windows |
||
Blocarea |
||
Schimbarea codificării consolei Windows în UTF-8 |
||
Schimbarea codificării sistemului de fișiere Windows în UTF-8 |
||
Alte modificări ale limbajului:
O instrucțiune global sau nonlocal trebuie acum să apară textual înaintea primei utilizări a numelui afectat în același domeniu de vizibilitate. Anterior, acest lucru era un SyntaxWarning. |
|
Acum este posibilă setarea unei metode speciale la None pentru a indica faptul că operația corespunzătoare nu este disponibilă. De exemplu, dacă o clasă setează __iter__() la None, clasa nu este iterabilă. |
|
Secvențele lungi de linii repetate din traceback sunt acum prescurtate ca [Previous line repeated {count} more times] |
|
Importul ridică acum noua excepție ModuleNotFoundError atunci când nu poate găsi un modul. Codul care verifică în prezent ImportError (în try-except) va continua să funcționeze. |
|
Metodele de clasă care se bazează pe super() fără argumente vor funcționa acum corect când sunt apelate din metodele metaclasei în timpul creării clasei. |
Modificări ale modulelor încorporate:
Iteratorii epuizați ai array.array vor rămâne acum epuizați chiar dacă tabloul iterat este extins. |
|
Funcția b2a_base64() acceptă acum un argument opțional de tip cuvânt-cheie newline pentru a controla dacă se adaugă caracterul de linie nouă la valoarea returnată |
Complet |
A fost adăugată noua constantă cmath.tau (τ) |
|
Constante noi: cmath.inf și cmath.nan pentru a corespunde math.inf și math.nan, precum și cmath.infj și cmath.nanj pentru a corespunde formatului folosit de repr-ul complex |
|
A fost adăugată noua clasă de bază abstractă Collection pentru a reprezenta clasele de containere iterabile cu dimensiune |
|
Noua clasă de bază abstractă Reversible reprezintă clasele iterabile care furnizează și metoda __reversed__(). |
|
Noua clasă de bază abstractă AsyncGenerator reprezintă generatoarele asincrone. |
|
Funcția namedtuple() acceptă acum un argument opțional de tip cuvânt-cheie module, care, atunci când este specificat, este folosit pentru atributul __module__ al clasei tuplu cu nume returnate. |
|
Argumentele verbose și rename pentru namedtuple() sunt acum doar de tip cuvânt-cheie. |
|
Instanțele recursive collections.deque pot fi acum serializate cu pickle. |
|
Funcțiile de hash BLAKE2 au fost adăugate la modul. blake2b() și blake2s() sunt întotdeauna disponibile și acceptă întregul set de funcționalități al BLAKE2. |
|
Au fost adăugate funcțiile de hash SHA-3 sha3_224(), sha3_256(), sha3_384(), sha3_512() și funcțiile de hash SHAKE shake_128() și shake_256(). |
|
Funcția de derivare a cheilor pe bază de parolă scrypt() este acum disponibilă cu OpenSSL 1.1.0 și versiunile mai noi. |
|
json.load() și json.loads() acceptă acum intrare binară. JSON-ul codificat trebuie reprezentat folosind UTF-8, UTF-16 sau UTF-32. |
|
A fost adăugată noua constantă math.tau (τ) |
Complet |
O nouă metodă close() permite închiderea explicită a unui iterator scandir(). Iteratorul scandir() acceptă acum protocolul de manager de context. |
|
Pe Linux, os.urandom() se blochează acum până când bazinul de entropie urandom al sistemului este inițializat, pentru a crește securitatea. |
|
Apelul de sistem Linux getrandom() (obținerea de octeți aleatori) este acum expus prin noua funcție os.getrandom(). |
|
A fost adăugat suportul pentru intervale de modificatori în expresiile regulate. Exemple: «(?i:p)ython» corespunde «python» și «Python», dar nu și «PYTHON»; «(?i)g(?-i:v)r» corespunde «GvR» și «gvr», dar nu și «GVR». |
|
Grupurile obiectelor Match pot fi accesate prin __getitem__, ceea ce este echivalent cu group(). Astfel, mo[«name»] este acum echivalent cu mo.group(«name»). |
|
Obiectele Match acceptă acum obiecte de tip index ca indici de grup. |
|
Funcția ioctl() acceptă acum codul de control SIO_LOOPBACK_FAST_PATH. |
|
Constantele getsockopt() SO_DOMAIN, SO_PROTOCOL, SO_PEERSEC și SO_PASSSEC sunt acum acceptate. |
|
setsockopt() acceptă acum forma setsockopt(level, optname, None, optlen: int). |
|
Modulul socket acceptă acum familia de adrese AF_ALG pentru a interfața cu API-ul de criptografie al nucleului Linux. Au fost adăugate ALG_, SOL_ALG și sendmsg_afalg(). |
|
Au fost adăugate noi constante Linux TCP_USER_TIMEOUT și TCP_CONGESTION. |
|
ssl acceptă OpenSSL 1.1.0. Versiunea minimă recomandată este 1.0.2. |
|
3DES a fost eliminat din suitele de cifruri implicite, iar suitele de cifruri ChaCha20 Poly1305 au fost adăugate. |
|
SSLContext are o configurație implicită mai bună pentru opțiuni și cifruri. |
|
O sesiune SSL poate fi copiată de la o conexiune din partea clientului la alta cu ajutorul noii clase SSLSession. Reluarea sesiunii TLS poate accelera handshake-ul inițial, poate reduce latența și poate îmbunătăți performanța. |
|
Noua metodă get_ciphers() poate fi folosită pentru a obține o listă a cifrurilor activate în ordinea priorității cifrurilor. |
|
Toate constantele și fanioanele au fost convertite în IntEnum și IntFlags. |
|
Au fost adăugate protocoale TLS specifice pentru partea de server și de client pentru SSLContext. |
|
A fost adăugat SSLContext.post_handshake_auth pentru a activa și ssl.SSLSocket.verify_client_post_handshake() pentru a iniția autentificarea post-handshake TLS 1.3. |
|
acceptă acum numerele cu virgulă mobilă IEEE 754 cu jumătate de precizie prin specificatorul de format «e». |
|
Noua funcție getfilesystemencodeerrors() returnează numele modului de eroare folosit pentru a converti între numele de fișiere Unicode și numele de fișiere bytes. |
|
Funcțiile compress() și decompress() acceptă acum argumente de tip cuvânt-cheie |
|
Note