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