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