Python 3.6¶
Python 3.6 beta 1 è stato rilasciato il 12 settembre 2016 e un riepilogo delle nuove funzionalità è disponibile qui:
Nuove funzionalità di sintassi |
Stato |
|
Formattazione letterale delle stringhe |
Completo |
|
Trattini bassi nei letterali numerici |
Completo |
|
Generatori asincroni |
||
Sintassi per le annotazioni delle variabili (provvisoria) |
Completo |
|
Comprehension asincrone |
||
Nuove funzionalità integrate |
||
Preservazione dell’ordine dei kwargs in una funzione |
||
Personalizzazione più semplice della creazione delle classi |
Parziale [1] |
|
Preservazione dell’ordine di definizione degli attributi di classe |
||
Modifiche alla libreria standard |
||
Disambiguazione dell’ora locale |
||
Aggiunta di un modulo secrets alla libreria standard |
||
Aggiunta di un protocollo per i percorsi del file system |
||
Aspetti interni di CPython |
||
Aggiunta di una versione privata ai dict |
Non implementato |
|
Aggiunta di un’API di valutazione dei frame a CPython |
||
Modifiche per Linux/Windows |
||
Rendere |
||
Modifica della codifica della console di Windows in UTF-8 |
||
Modifica della codifica del file system di Windows in UTF-8 |
||
Altre modifiche al linguaggio:
Un’istruzione global o nonlocal deve ora apparire testualmente prima del primo utilizzo del nome interessato nello stesso ambito. In precedenza ciò generava un SyntaxWarning. |
|
È ora possibile impostare un metodo speciale a None per indicare che l’operazione corrispondente non è disponibile. Ad esempio, se una classe imposta __iter__() a None, la classe non è iterabile. |
|
Le lunghe sequenze di righe di traceback ripetute vengono ora abbreviate come [Previous line repeated {count} more times] |
|
L’import ora solleva la nuova eccezione ModuleNotFoundError quando non riesce a trovare un modulo. Il codice che attualmente verifica la presenza di ImportError (in try-except) continuerà a funzionare. |
|
I metodi di classe che si basano su super() senza argomenti funzioneranno ora correttamente quando vengono chiamati dai metodi delle metaclassi durante la creazione della classe. |
Modifiche ai moduli integrati:
Gli iteratori esauriti di array.array rimarranno ora esauriti anche se l’array iterato viene esteso. |
|
La funzione b2a_base64() accetta ora un argomento keyword newline opzionale per controllare se il carattere di a capo viene aggiunto al valore restituito |
Completo |
È stata aggiunta la nuova costante cmath.tau (τ) |
|
Nuove costanti: cmath.inf e cmath.nan per corrispondere a math.inf e math.nan, e anche cmath.infj e cmath.nanj per corrispondere al formato usato dal repr dei numeri complessi |
|
È stata aggiunta la nuova classe base astratta Collection per rappresentare le classi container iterabili dotate di dimensione |
|
La nuova classe base astratta Reversible rappresenta le classi iterabili che forniscono anche il metodo __reversed__(). |
|
La nuova classe base astratta AsyncGenerator rappresenta i generatori asincroni. |
|
La funzione namedtuple() accetta ora un argomento keyword opzionale module che, se specificato, viene usato per l’attributo __module__ della classe named tuple restituita. |
|
Gli argomenti verbose e rename di namedtuple() sono ora accettati solo come keyword. |
|
Le istanze ricorsive di collections.deque possono ora essere serializzate con pickle. |
|
Al modulo sono state aggiunte le funzioni di hash BLAKE2. blake2b() e blake2s() sono sempre disponibili e supportano l’intero set di funzionalità di BLAKE2. |
|
Sono state aggiunte le funzioni di hash SHA-3 sha3_224(), sha3_256(), sha3_384(), sha3_512() e le funzioni di hash SHAKE shake_128() e shake_256(). |
|
La funzione di derivazione di chiavi basata su password scrypt() è ora disponibile con OpenSSL 1.1.0 e versioni successive. |
|
json.load() e json.loads() supportano ora l’input binario. Il JSON codificato deve essere rappresentato usando UTF-8, UTF-16 o UTF-32. |
|
È stata aggiunta la nuova costante math.tau (τ) |
Completo |
Un nuovo metodo close() consente di chiudere esplicitamente un iteratore scandir(). L’iteratore scandir() supporta ora il protocollo del context manager. |
|
Su Linux, os.urandom() ora si blocca fino a quando il pool di entropia urandom del sistema non è inizializzato, per aumentare la sicurezza. |
|
La chiamata di sistema Linux getrandom() (ottiene byte casuali) è ora esposta come nuova funzione os.getrandom(). |
|
Aggiunto il supporto per gli intervalli di modificatori nelle espressioni regolari. Esempi: “(?i:p)ython” corrisponde a “python” e “Python”, ma non a “PYTHON”; “(?i)g(?-i:v)r” corrisponde a “GvR” e “gvr”, ma non a “GVR”. |
|
È possibile accedere ai gruppi di un oggetto match tramite __getitem__, che equivale a group(). Quindi mo[“name”] equivale ora a mo.group(“name”). |
|
Gli oggetti match supportano ora oggetti di tipo indice come indici di gruppo. |
|
La funzione ioctl() supporta ora il codice di controllo SIO_LOOPBACK_FAST_PATH. |
|
Le costanti di getsockopt() SO_DOMAIN, SO_PROTOCOL, SO_PEERSEC e SO_PASSSEC sono ora supportate. |
|
setsockopt() supporta ora la forma setsockopt(level, optname, None, optlen: int). |
|
Il modulo socket supporta ora la famiglia di indirizzi AF_ALG per interfacciarsi con l’API crypto del kernel Linux. Sono stati aggiunti ALG_, SOL_ALG e sendmsg_afalg(). |
|
Sono state aggiunte le nuove costanti Linux TCP_USER_TIMEOUT e TCP_CONGESTION. |
|
ssl supporta OpenSSL 1.1.0. La versione minima consigliata è 1.0.2. |
|
Il 3DES è stato rimosso dalle suite di cifrari predefinite e sono state aggiunte le suite di cifrari ChaCha20 Poly1305. |
|
SSLContext ha una configurazione predefinita migliore per le opzioni e i cifrari. |
|
Una sessione SSL può essere copiata da una connessione lato client a un’altra con la nuova classe SSLSession. La ripresa della sessione TLS può velocizzare l’handshake iniziale, ridurre la latenza e migliorare le prestazioni. |
|
Il nuovo metodo get_ciphers() può essere usato per ottenere un elenco dei cifrari abilitati in ordine di priorità. |
|
Tutte le costanti e i flag sono stati convertiti in IntEnum e IntFlags. |
|
Sono stati aggiunti protocolli TLS specifici lato server e lato client per SSLContext. |
|
Aggiunto SSLContext.post_handshake_auth per abilitare e ssl.SSLSocket.verify_client_post_handshake() per avviare l’autenticazione post-handshake di TLS 1.3. |
|
supporta ora i float a mezza precisione IEEE 754 tramite lo specificatore di formato “e”. |
|
La nuova funzione getfilesystemencodeerrors() restituisce il nome della modalità di errore usata per convertire tra nomi di file Unicode e nomi di file in byte. |
|
Le funzioni compress() e decompress() accettano ora argomenti keyword |
|
Note