
Python prévoit de publier la version 3.12 du langage en octobre 2023. Cette version apporte un ensemble de fonctionnalités et d’améliorations passionnantes. Son objectif est d’améliorer votre expérience de codage en offrant une plateforme plus efficace et plus puissante, vous permettant d’améliorer vos compétences en matière de codage.
1. Messages d’erreur améliorés
Python a continuellement amélioré ses messages d’erreur dans les versions récentes. La version 3.11 a introduit des messages d’erreur plus précis en indiquant les positions exactes dans les lignes.
Python 3.12 porte ces améliorations à un niveau supérieur, avec les ajouts suivants :
- Les suggestions de modules manquants (« avez-vous oublié d’importer X ? ») englobent désormais les modules de la bibliothèque standard.
- Amélioration des suggestions d’erreurs pour les erreurs de syntaxe courantes liées aux importations. Par exemple, si vous avez import p de m dans votre code, une erreur vous demandera si vous aviez l’intention d’écrire from m import p.
- Les erreurs d’importation pour un module donné incluent maintenant des suggestions de l’espace de noms du module importé.
- Erreur de nom Les suggestions intègrent désormais également soi ajoutée au nom lorsqu’elle est soulevée dans une instance de classe. Par exemple, si le nom vitesse n’est pas défini, le message d’erreur proposera self.speed comme correction potentielle. Ceci est particulièrement utile puisque l’omission de auto pour les variables d’instance est une source fréquente d’erreurs dans les instances de classe.
2. Prise en charge du profileur Linux Perf
L’outil de profilage Linux largement utilisé, perfpeut désormais fonctionner avec les programmes Python 3.12. Dans le passé, il se concentrait uniquement sur le suivi des opérations de niveau C au sein du moteur d’exécution Python.
Avec Python 3.12, vous pouvez maintenant activer perf pour collecter des détails sur les programmes Python également. Vous pouvez l’activer au niveau de l’environnement ou à l’intérieur d’un programme Python en utilisant la commande sys.activate_stack_trampoline fonction.
3. Amélioration des indications de type
Depuis son introduction dans Python 3.5, la syntaxe de typage de Python a permis aux outils de typage de détecter un large éventail d’erreurs à l’avance. Avec chaque version ultérieure, le système de type de Python a évolué pour englober une gamme plus large de cas d’utilisation, offrant des fonctionnalités de typage améliorées.
TypedDict
Python 3.12 introduit l’utilisation de TypedDict comme source d’indices pour les arguments des mots-clés dans les fonctions. Ceci utilise le générique variadique Unpack, que la version 3.11 a introduit.
Voici un exemple illustrant cette fonctionnalité :
class Movie(TypedDict):
name: str
year: int
def foo(**kwargs: Unpack[Movie]) -> None: ...
Dans ce cas, la fonction foo peut recevoir des arguments de type mot-clé avec des noms et des types qui s’alignent sur le contenu du Movie TypedDict : nom du type str et année de type int.
Cette amélioration s’avère précieuse lors de l’analyse de type des fonctions qui acceptent des arguments optionnels de type mot-clé sans valeur par défaut.
Syntaxe des paramètres de type
Python 3.12 introduit une syntaxe plus concise pour spécifier les types dans les classes génériques, les fonctions ou les alias de type.
Considérons ce qui suit :
# the old method
from typing import TypeVar
_T = TypeVar("_T")
def func(a: _T, b: _T) -> _T:
...
# the new type parameter method
def func[T](a: T, b: T) -> T:
...
Avec la nouvelle syntaxe, il n’est pas nécessaire d’importer explicitement TypeVar. Au lieu de cela, vous pouvez utiliser la fonction func[T] pour indiquer des références de type générique. Il est également possible de définir des limites de type, par exemple en spécifiant qu’un type doit faire partie d’un groupe de types. Toutefois, ces types eux-mêmes ne peuvent pas être génériques. Voici un exemple de cette syntaxe func[T: (str, int)].
4. Collecte des ordures
Dans Python 3.12, le mécanisme de collecte des déchets a changé. Auparavant, le GC s’exécutait à chaque fois qu’un objet était alloué.
Cependant, à partir de Python 3.12, le GC opère exclusivement au sein de la classe eval breaker Le mécanisme eval breaker fait partie de la boucle du bytecode Python. En d’autres termes, il s’exécute entre l’exécution d’un bytecode et le suivant.
En outre, le GC se déclenche également lorsque le mécanisme de vérification du gestionnaire de signaux de CPython est invoqué. Cet ajustement permet un ramassage périodique des ordures lors d’appels de longue durée à des extensions C en dehors du temps d’exécution.
Dévoilement de Python 3.12
Python 3.12 introduit une série de fonctionnalités et d’améliorations passionnantes qui révolutionnent l’expérience du codage. Avec des messages d’erreur améliorés, des capacités de typage améliorées, la prise en charge du Linux Perf Profiler et un ramassage optimisé des déchets, Python 3.12 vous fournit les outils nécessaires pour écrire un code de haute qualité de manière efficace. Profitez de la puissance de Python et élevez vos compétences en matière de codage à de nouveaux sommets.