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