Quoi de neuf dans Python 3.11
Python 3.11.2 est la version la plus récente du langage de programmation populaire et comprend un certain nombre de nouvelles fonctionnalités et améliorations. Dans cet article de blog, nous examinerons certaines des nouvelles fonctionnalités de Python 3.11 et donnerons un exemple de code pour vous aider à démarrer.
Résumé
Python 3.11 est 10 à 60 % plus rapide que 3.10. Mesuré une accélération de 1,25x sur la suite de référence standard. Il y a exception, speed, syntaxdes améliorations.
Des exceptions
À partir de maintenant, vous pouvez déclencher plusieurs exceptions en utilisant des groupes d'exceptions.
La PEP 654 introduit des fonctionnalités de langage qui permettent à un programme de déclencher et de gérer simultanément plusieurs exceptions non liées. Les types intégrésExceptionGroupetBaseExceptionGrouppermettent de regrouper des exceptions et de les déclencher ensemble, et la nouvelleexcept*syntaxe se généraliseexceptpour correspondre à des sous-groupes de groupes d'exceptions.
https://docs.python.org/3/whatsnew/3.11.html#whatsnew311-pep654
Vous pouvez également ajouter des notes à votre exception en utilisant cela, vous pouvez donner plus d'informations facilement. Vous devez attraper l'exception en utilisant try exceptpuis vous devez ajouter une note et la relancer
try:
i = 1 / 0
except Exception as e:
e.add_note("New Note: Zero Division Error")
raise
Traceback (most recent call last):
File "C:/Users/Sarper/Desktop/test.py", line 2, in <module>
i = 1 / 0
ZeroDivisionError: division by zero
New Note: Zero Division Error
Le nouveau type est add, Selfce qui est normal self.
Nouvelles fonctionnalités liées aux conseils de type
Cette section couvre les modifications majeures affectant les conseils de type PEP 484 et le typingmodule.
Voici un exemple:
from typing import Self
class MyClass:
def __init__(self, num):
self.num = num
def create_class(self) -> Self:
return MyClass(3) # returning new class
my_class = MyClass(2)
print(my_class.create_class())
# OUTPUT:
# <__main__.MyClass object at 0x000002477E1D0250>
from typing import Self
class MyClass:
def __init__(self, num):
self.num = num
def return_class(self) -> Self:
return self # returning self
my_class = MyClass(2)
print(my_class.return_class())
# OUTPUT:
<__main__.MyClass object at 0x0000014B89E71350>
Requiredet NotRequiredfournir un moyen simple de marquer si des éléments individuels dans a TypedDictdoivent être présents. Auparavant, cela n'était possible qu'en utilisant l'héritage.
Tous les champs sont toujours obligatoires par défaut, sauf si le paramètre total est défini sur False, auquel cas tous les champs ne sont toujours pas obligatoires par défaut. Par exemple, ce qui suit spécifie a TypedDictavec une clé requise et une clé non requise :
La création de dictionnaires spéciaux est une capacité puissante si vous souhaitez créer des bibliothèques et réduire les erreurs pouvant survenir de la part de l'utilisateur.
class Movie(TypedDict):
title: str
year: NotRequired[int]
m1: Movie = {"title": "Black Panther", "year": 2018} # OK
m2: Movie = {"title": "Star Wars"} # OK (year is not required)
m3: Movie = {"year": 2022} # ERROR (missing required field title)
class Movie(TypedDict, total=False):
title: Required[str]
year: int
asyncio contextlib dataclasses datatime enum fcntl fractions functools haslib inpect locale logging math operator os pathlib re shutlit socket sqlite3 string sys sysconfig tempfile threading time tkinter traceback typing unicodedata unittest venv warnings zipfile
Regardez ici pour plus d'informations
Accélérations des opérations
- Opérations binaires
x+x; x*x; x-x;10% - Indice
a[i]10–25% - Enregistrer l'indice
a[i] = z10–25 % - Appels
f(arg)C(arg)20% - Charger la variable globale
printlen[1 ] - Charger l'attribut
o.attr[ 3] - Méthodes de chargement pour l'appel
o.meth()10–20 % - Attribut de magasin
o.attr = z2 % dans pyperformance - Déballer la séquence
*seq8 %
Source
https://docs.python.org/3/whatsnew/3.11.html
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































