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