Python 3.9¶
Python 3.9.0 (final) a été publié le 5 octobre 2020. Les fonctionnalités de la version 3.9 sont définies dans le PEP 596 et une description détaillée des modifications est disponible dans Nouveautés de Python 3.9
Fonctionnalités |
État |
|
Accès rapide à l’état du module depuis les méthodes des types d’extension C |
Non pertinent |
|
Ajout d’opérateurs d’union aux dictionnaires |
Terminé [1] |
|
Annotations de type génériques dans les collections standard |
||
Annotations flexibles de fonctions et de variables |
||
CPython adopte un cycle de publication annuel. Au lieu d’un cycle annuel, viser un cycle de publication de deux mois |
Non pertinent |
|
Assouplissement des restrictions grammaticales sur les décorateurs |
||
La base de données des fuseaux horaires de l’IANA est désormais présente dans la bibliothèque standard via le module zoneinfo |
||
Méthodes de chaîne pour supprimer les préfixes et les suffixes |
||
CPython utilise désormais un nouvel analyseur basé sur PEG |
Non pertinent |
Autres modifications du langage :
__import__() lève désormais ImportError au lieu de ValueError |
Terminé |
Python obtient désormais le chemin absolu du nom de fichier du script spécifié sur la ligne de commande (ex : python3 script.py) : l’attribut __file__ du module __main__ est devenu un chemin absolu, plutôt qu’un chemin relatif |
|
Par défaut, pour de meilleures performances, l’argument errors n’est vérifié qu’à la première erreur d’encodage/décodage, et l’argument encoding est parfois ignoré pour les chaînes vides |
|
« « .replace(« « , s, n) renvoie désormais s au lieu d’une chaîne vide pour tout n non nul. C’est désormais cohérent avec « « .replace(« « , s) |
|
Toute expression valide peut désormais être utilisée comme décorateur. Auparavant, la grammaire était beaucoup plus restrictive |
|
L’exécution parallèle de aclose() / asend() / athrow() est désormais interdite, et ag_running reflète désormais l’état d’exécution réel du générateur asynchrone |
|
Les erreurs inattendues lors de l’appel de la méthode __iter__ ne sont plus masquées par une TypeError dans l’opérateur in et les fonctions contains(), indexOf() et countOf() du module operator |
|
Les expressions lambda sans parenthèses ne peuvent plus constituer la partie expression d’une clause if dans les compréhensions et les expressions génératrices |
Modifications des modules intégrés :
En raison de problèmes de sécurité importants, le paramètre reuse_address de asyncio.loop.create_datagram_endpoint() n’est plus pris en charge |
|
Ajout d’une nouvelle coroutine shutdown_default_executor() qui planifie l’arrêt de l’exécuteur par défaut en attendant que le ThreadPoolExecutor termine sa fermeture. De plus, asyncio.run() a été mise à jour pour utiliser la nouvelle coroutine. |
|
Ajout de asyncio.PidfdChildWatcher, une implémentation de surveillance de processus enfants spécifique à Linux qui interroge les descripteurs de fichiers de processus |
|
ajout d’une nouvelle coroutine asyncio.to_thread() |
|
Lors de l’annulation de la tâche en raison d’un délai d’expiration, asyncio.wait_for() attendra désormais que l’annulation soit terminée, y compris dans le cas où le délai est <= 0, comme elle le fait pour les délais positifs |
|
asyncio lève désormais TyperError lors de l’appel de méthodes incompatibles avec un socket ssl.SSLSocket |
|
Le ramasse-miettes ne se bloque plus sur les objets ressuscités |
|
Ajout d’une nouvelle fonction gc.is_finalized() pour vérifier si un objet a été finalisé par le ramasse-miettes |
|
Extension de la fonction math.gcd() pour gérer plusieurs arguments. Auparavant, elle ne prenait en charge que deux arguments |
|
Ajout de math.lcm() : renvoie le plus petit commun multiple des arguments spécifiés |
|
Ajout de math.nextafter() : renvoie la valeur en virgule flottante suivant x en direction de y |
|
Ajout de math.ulp() : renvoie la valeur du bit de poids le plus faible d’un flottant |
|
Exposition des fonctions os.pidfd_open() et os.P_PIDFD spécifiques à Linux |
|
La fonction os.unsetenv() est désormais également disponible sous Windows |
Terminé |
Les fonctions os.putenv() et os.unsetenv() sont désormais toujours disponibles |
Terminé |
Ajout de la fonction os.waitstatus_to_exitcode() : convertit un statut d’attente en code de sortie |
|
Ajout d’une nouvelle méthode random.Random.randbytes : génère des octets aléatoires |
|
Ajout d’un nouvel attribut sys.platlibdir : nom du répertoire de bibliothèques spécifique à la plateforme |
|
Auparavant, sys.stderr était mis en mémoire tampon par blocs en mode non interactif. Désormais, stderr est par défaut toujours mis en mémoire tampon par lignes |
|
Notes