Les meilleures nouvelles fonctionnalités et correctifs de fonctionnalités dans Python 3.11

WBOY
Libérer: 2022-05-30 20:50:34
avant
2881 Les gens l'ont consulté

Cet article vous apporte des connaissances pertinentes sur python, qui présente principalement les meilleures nouvelles fonctionnalités et correctifs de fonctionnalités de la version 3.11. Voici un aperçu des nouvelles fonctionnalités les plus importantes de Python 3.11 et de leur impact sur Python 3.11. regardez la signification des développeurs Python, j'espère que cela sera utile à tout le monde.

Les meilleures nouvelles fonctionnalités et correctifs de fonctionnalités dans Python 3.11

Apprentissage recommandé : Tutoriel vidéo Python

Le langage de programmation Python publie une nouvelle version chaque année. Une version bêta avec fonctionnalités verrouillées est publiée au premier semestre et la version finale sera publiée à. la fin de l'année. L'ensemble des fonctionnalités de Python 3.11 vient d'être finalisé et une version bêta est disponible pour les tests. Les développeurs sont encouragés à essayer cette dernière version sur du code hors production pour vérifier qu'elle n'entre pas en conflit avec vos programmes et pour comprendre si votre code bénéficiera de ses améliorations de performances.

Voici un aperçu des nouvelles fonctionnalités les plus importantes de Python 3.11 et de ce qu'elles signifient pour les développeurs Python.

Améliorations de la vitesse :

Il existe de nombreuses améliorations de performances individuelles dans Python 3.11, mais la plus importante est l'interpréteur adaptatif dédié. Étant donné que le type de l'objet change rarement, l'interpréteur essaie maintenant d'analyser le code en cours d'exécution et de remplacer le bytecode normal par le type de bytecode spécifique. Par exemple, les opérations binaires (addition, soustraction, etc.) peuvent être remplacées par des versions spécialisées pour les entiers, les virgules flottantes et les chaînes.

Dans Python 3.11, les appels de fonctions Python nécessitent également moins de surcharge. Les cadres de pile pour les appels de fonction utilisent désormais moins de mémoire et sont conçus pour être plus efficaces. De plus, bien que les appels récursifs ne soient pas optimisés (ce qui n'est probablement pas possible en Python de toute façon), ils sont plus efficaces que les versions précédentes. L'interpréteur Python lui-même démarre également plus rapidement et les modules de base requis par le runtime Python sont stockés et chargés plus efficacement.

                  Selon la suite de benchmarks officielle Python, Python 3.11 s'exécute environ 1,25 fois plus vite que la version 3.10. Notez que cette accélération est une mesure globale : certaines choses sont beaucoup plus rapides, mais beaucoup d’autres ne sont que légèrement plus rapides ou à peu près identiques. Néanmoins, le meilleur de ces améliorations est qu’elles sont gratuites. Vous n'avez pas besoin d'apporter de modifications au code de votre programme Python pour profiter des accélérations de la version 3.11.

Messages d'erreur améliorés :

Une autre fonctionnalité très utile de la version 3.11 concerne les messages d'erreur plus détaillés. Python 3.10 offre déjà un meilleur rapport d'erreurs grâce à un nouvel analyseur dans l'interpréteur. Désormais, Python 3.11 étend cela, fournissant des informations détaillées sur la partie spécifique d'une expression donnée à l'origine de l'erreur.

Pensez au code suivant qui renvoie l'erreur :

x = [1,2,3]
z = x[1][0]
Copier après la connexion

Dans Python 3.10, nous obtenons le message d'erreur suivant, qui n'est pas très utile :

  File "C:\Python311\code.py", line 2, in <module>
    z = x[1][0]
TypeError: 'int' object is not subscriptable
Copier après la connexion

Au lieu de nous laisser déterminer quel int est le code non compilable, dans Python 3.11 La trace d'erreur pointe vers la partie exacte de la ligne qui a généré l'erreur :

  File "C:\Python311\code.py", line 2, in <module>
    z = x[1][0]
        ~~~~^^^
TypeError: 'int' object is not subscriptable
Copier après la connexion

Il est maintenant assez clair où se situe le problème.

Améliorations des exceptions :

Le mécanisme de gestion des erreurs de Python a acquis de nombreuses nouvelles fonctionnalités dans Python 3.11 :

1 Utilisez la nouvelle syntaxe except* et le nouveau type d'exception ExceptionGroup pour gérer plusieurs exceptions. Cela permet une gestion élégante des problèmes susceptibles de générer plusieurs erreurs simultanément, par exemple lors de l'utilisation de méthodes asynchrones ou concurrentes, ou lors de la gestion de plusieurs échecs lors d'une nouvelle tentative d'opération.

2. Exceptions « sans coût » : à moins qu'une exception ne soit réellement levée, il n'y a désormais aucune consommation de mémoire pour le programme. Cela signifie que le chemin par défaut pour essayer/sauf les blocs est plus rapide et utilise moins de mémoire.

3. Le temps nécessaire pour détecter les exceptions est réduit d'environ 10 %.

4. Les exceptions peuvent être améliorées grâce à des annotations contextuelles pour séparer les exceptions des blocs de code.

Type Boost :

La fonctionnalité d'indication de type de Python facilite la gestion et l'analyse des bases de code plus volumineuses, et depuis Python 3.5, les performances des indications de type ont considérablement augmenté à chaque révision. Python 3.11 introduit plusieurs nouvelles astuces de type.

Self-type :

Les méthodes de classe nécessitent une déclaration paresseuse et détaillée avant de renvoyer leur propre type pour prendre effet. Le modèle de type .Self facilite la déclaration de la valeur de retour d'une méthode de classe. Vous pouvez obtenir des résultats utiles et prévisibles à partir des outils d’analyse de ces méthodes.

Type littéral de chaîne arbitraire :

Auparavant, les annotations de type ne pouvaient pas définir qu'une variable donnée doit être une chaîne littérale, c'est-à-dire une chaîne définie dans le code source. nouveau type. L'annotation LiteralString résout ce problème. À l'aide de nouvelles annotations, les linters peuvent tester si une variable est une chaîne définie dans la source ou une nouvelle chaîne composée uniquement de chaînes définies dans la source.

Conversion de classes de données :

Depuis Python 3.7, les classes de données facilitent la définition de classes qui suivent le modèle commun de création de propriétés basées sur des paramètres d'initialisation. Mais il n’existe aucun mécanisme standard permettant à quelque chose qui se comporte comme une classe de données (mais qui n’est pas la classe de données elle-même) d’utiliser des annotations de type pour déclarer son comportement. La transformation Dataclass ajoute le modificateur type.dataclass_transform pour indiquer au compilateur qu'une fonction, une classe ou une métaclasse donnée se comporte comme une classe de données.

Génériques variables :

Les propositions génériques initiales incluent TypeVar, un moyen de spécifier une fonction générique en utilisant un seul type paramétré, par exemple, le type T peut être int ou float. Python 3.11 a ajouté TypeVarTuple, ou « génériques variables », que vous pouvez utiliser pour spécifier des espaces réservés, non seulement un type, mais une plage de types, représentés sous forme de tuple. Ceci est particulièrement utile dans les bibliothèques comme NumPy, où vous pouvez vérifier les erreurs à l'avance, par exemple si le tableau fourni a la forme correcte.

Prise en charge de la lecture seule de TOML dans stdlib :

Python utilise TOML ou le langage minimaliste explicite de Tom comme format de configuration (tel que pyproject.TOML), mais n'expose pas la possibilité de lire les fichiers au format TOML en tant que module de bibliothèque standard. Python 3.11 a ajouté tomllib pour résoudre ce problème. Notez que tomllib ne crée ni n'écrit de fichiers TOML ; pour cela, vous avez besoin d'un module tiers comme Tomli-W ou TOML Kit.

Regroupement atomique et accélération des expressions régulières :

Le module re de Python est utilisé pour gérer les expressions régulières, et il lui manque certaines fonctionnalités trouvées dans d'autres implémentations d'expressions régulières. L’un d’eux est le regroupement atomique, largement pris en charge dans d’autres langages. Python 3.11 prend désormais en charge ce modèle en utilisant une syntaxe commune pour le regroupement atomique (par exemple, (?>…).

Le moteur de correspondance de modèles du module re a également été un peu réécrit et fonctionne environ 10 % plus rapidement.

Depuis le bibliothèque standard Suppression des « batteries défectueuses » :

PEP 594 a lancé un effort pour supprimer de nombreuses batteries dites mortes, ou modules obsolètes ou non maintenus, de la bibliothèque standard Python. À partir de Python 3.11, ces bibliothèques sont marquées comme obsolètes. mais pas encore supprimés ; ils seront complètement supprimés dans Python 3.13

Autres nouvelles fonctionnalités, correctifs et modifications dans Python 3.11 :

Il y a de nombreuses petites améliorations dans Python 3.11 :

1 Les objets Python doivent être mis à jour. car leurs espaces de noms sont désormais créés paresseusement et leurs dictionnaires d'espaces de noms partagent désormais les clés lorsque cela est possible

2 Les dictionnaires où toutes les clés sont Unicode n'ont plus besoin de stocker les hachages, réduisant ainsi la taille du dictionnaire et permettent une plus grande efficacité du cache

. 3. Le runtime Python utilise l'interpréteur Python et peut désormais prendre en charge expérimentalement la compilation vers WebAssembly. Cela peut aider au développement futur de projets tels que PyScript, qui permet l'exécution de la compilation WASM dans le navigateur.

Apprentissage recommandé : Tutoriel vidéo Python.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!