Python 3.6¶
Python 3.6 beta 1 a été publié le 12 septembre 2016, et un résumé des nouvelles fonctionnalités est disponible ici :
Nouvelles fonctionnalités de syntaxe |
État |
|
Formatage littéral des chaînes de caractères |
Terminé |
|
Traits de soulignement dans les littéraux numériques |
Terminé |
|
Générateurs asynchrones |
||
Syntaxe pour les annotations de variables (provisoire) |
Terminé |
|
Compréhensions asynchrones |
||
Nouvelles fonctionnalités intégrées |
||
Préservation de l’ordre des kwargs dans une fonction |
||
Personnalisation simplifiée de la création de classes |
Partiel [1] |
|
Préservation de l’ordre de définition des attributs de classe |
||
Modifications de la bibliothèque standard |
||
Désambiguïsation de l’heure locale |
||
Ajout d’un module secrets à la bibliothèque standard |
||
Ajout d’un protocole de chemin de système de fichiers |
||
Composants internes de CPython |
||
Ajout d’une version privée aux dictionnaires |
Ne sera pas fait |
|
Ajout d’une API d’évaluation de trame à CPython |
||
Modifications Linux/Windows |
||
Rendre |
||
Passage de l’encodage de la console Windows en UTF-8 |
||
Passage de l’encodage du système de fichiers Windows en UTF-8 |
||
Autres modifications du langage :
Une instruction global ou nonlocal doit maintenant apparaître textuellement avant la première utilisation du nom concerné dans la même portée. Auparavant, il s’agissait d’un SyntaxWarning. |
|
Il est désormais possible de définir une méthode spéciale à None pour indiquer que l’opération correspondante n’est pas disponible. Par exemple, si une classe définit __iter__() à None, la classe n’est pas itérable. |
|
Les longues séquences de lignes de traceback répétées sont désormais abrégées sous la forme [Previous line repeated {count} more times] |
|
L’importation lève maintenant la nouvelle exception ModuleNotFoundError lorsqu’elle ne parvient pas à trouver un module. Le code qui vérifie actuellement ImportError (dans un try-except) continuera de fonctionner. |
|
Les méthodes de classe reposant sur un super() sans argument fonctionneront désormais correctement lorsqu’elles sont appelées depuis des méthodes de métaclasse pendant la création de la classe. |
Modifications des modules intégrés :
Les itérateurs épuisés d’un array.array resteront désormais épuisés même si le tableau itéré est étendu. |
|
La fonction b2a_base64() accepte désormais un argument nommé optionnel newline permettant de contrôler si le caractère de saut de ligne est ajouté à la valeur de retour |
Terminé |
La nouvelle constante cmath.tau (τ) a été ajoutée |
|
Nouvelles constantes : cmath.inf et cmath.nan pour correspondre à math.inf et math.nan, ainsi que cmath.infj et cmath.nanj pour correspondre au format utilisé par le repr des nombres complexes |
|
La nouvelle classe de base abstraite Collection a été ajoutée pour représenter les classes de conteneurs itérables ayant une taille |
|
La nouvelle classe de base abstraite Reversible représente les classes itérables qui fournissent également la méthode __reversed__(). |
|
La nouvelle classe de base abstraite AsyncGenerator représente les générateurs asynchrones. |
|
La fonction namedtuple() accepte désormais un argument nommé optionnel module qui, lorsqu’il est spécifié, est utilisé pour l’attribut __module__ de la classe de tuple nommé renvoyée. |
|
Les arguments verbose et rename de namedtuple() sont désormais réservés aux arguments nommés. |
|
Les instances récursives de collections.deque peuvent désormais être sérialisées avec pickle. |
|
Les fonctions de hachage BLAKE2 ont été ajoutées au module. blake2b() et blake2s() sont toujours disponibles et prennent en charge l’ensemble des fonctionnalités de BLAKE2. |
|
Les fonctions de hachage SHA-3 sha3_224(), sha3_256(), sha3_384(), sha3_512(), ainsi que les fonctions de hachage SHAKE shake_128() et shake_256() ont été ajoutées. |
|
La fonction de dérivation de clé basée sur un mot de passe scrypt() est désormais disponible avec OpenSSL 1.1.0 et versions ultérieures. |
|
json.load() et json.loads() prennent désormais en charge l’entrée binaire. Le JSON encodé doit être représenté en UTF-8, UTF-16 ou UTF-32. |
|
La nouvelle constante math.tau (τ) a été ajoutée |
Terminé |
Une nouvelle méthode close() permet de fermer explicitement un itérateur scandir(). L’itérateur scandir() prend désormais en charge le protocole de gestionnaire de contexte. |
|
Sous Linux, os.urandom() bloque désormais jusqu’à ce que le pool d’entropie urandom du système soit initialisé, afin de renforcer la sécurité. |
|
L’appel système Linux getrandom() (obtention d’octets aléatoires) est désormais exposé sous la forme de la nouvelle fonction os.getrandom(). |
|
Ajout de la prise en charge des plages de modificateurs dans les expressions régulières. Exemples : “(?i:p)ython” correspond à “python” et “Python”, mais pas à “PYTHON” ; “(?i)g(?-i:v)r” correspond à “GvR” et “gvr”, mais pas à “GVR”. |
|
Les groupes d’un objet match peuvent être accédés via __getitem__, ce qui équivaut à group(). Ainsi, mo[“name”] équivaut désormais à mo.group(“name”). |
|
Les objets match prennent désormais en charge les objets de type index comme indices de groupe. |
|
La fonction ioctl() prend désormais en charge le code de contrôle SIO_LOOPBACK_FAST_PATH. |
|
Les constantes getsockopt() SO_DOMAIN, SO_PROTOCOL, SO_PEERSEC et SO_PASSSEC sont désormais prises en charge. |
|
setsockopt() prend désormais en charge la forme setsockopt(level, optname, None, optlen: int). |
|
Le module socket prend désormais en charge la famille d’adresses AF_ALG pour s’interfacer avec l’API crypto du noyau Linux. ALG_, SOL_ALG et sendmsg_afalg() ont été ajoutés. |
|
De nouvelles constantes Linux TCP_USER_TIMEOUT et TCP_CONGESTION ont été ajoutées. |
|
ssl prend en charge OpenSSL 1.1.0. La version minimale recommandée est 1.0.2. |
|
Le 3DES a été retiré des suites de chiffrement par défaut et les suites de chiffrement ChaCha20 Poly1305 ont été ajoutées. |
|
SSLContext dispose d’une meilleure configuration par défaut pour les options et les chiffrements. |
|
Une session SSL peut être copiée d’une connexion côté client à une autre grâce à la nouvelle classe SSLSession. La reprise de session TLS peut accélérer la négociation initiale, réduire la latence et améliorer les performances. |
|
La nouvelle méthode get_ciphers() peut être utilisée pour obtenir une liste des chiffrements activés, par ordre de priorité. |
|
Toutes les constantes et tous les drapeaux ont été convertis en IntEnum et IntFlags. |
|
Des protocoles TLS spécifiques aux côtés serveur et client ont été ajoutés pour SSLContext. |
|
Ajout de SSLContext.post_handshake_auth pour activer et de ssl.SSLSocket.verify_client_post_handshake() pour initier l’authentification post-handshake de TLS 1.3. |
|
prend désormais en charge les flottants demi-précision IEEE 754 via le spécificateur de format “e”. |
|
La nouvelle fonction getfilesystemencodeerrors() renvoie le nom du mode d’erreur utilisé pour la conversion entre les noms de fichiers Unicode et les noms de fichiers en octets. |
|
Les fonctions compress() et decompress() acceptent désormais des arguments nommés |
|
Notes