Le contenu de cet article concerne le partage de plusieurs outils de vérification de type Python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Récemment, Microsoft a ouvert un outil de vérification de type statique Python sur Github : pyright
, qui a attiré beaucoup d'attention dans la communauté.
Microsoft s'implique de plus en plus dans des projets open source. Sans parler de la grande ambition stratégique d'acquérir Github, son éditeur open source VS Code a déjà attiré d'innombrables fans dans le monde des singes, même Kenneth Reitz. une célébrité de notre cercle Python (auteur de plusieurs projets open source, dont requêtes, requêtes-html, répondeur, etc.), ne tarit pas d'éloges à son sujet.
De nos jours, l'open source Pyright a une bonne réputation, alors jetons un coup d'œil à ses capacités et introduisons d'ailleurs plusieurs autres outils de vérification de type.
Comme nous le savons tous, Python est un langage typé dynamiquement, et le type réel des variables n'est connu qu'au moment de l'exécution. C'est la caractéristique des langages dynamiques. Cependant, dans le cadre d'un travail d'équipe ou de projets à grande échelle, le coût de la maintenance est inévitable. Comme le dit le proverbe : "La dynamique, c'est amusant pendant un moment, mais la reconstruction est un crématorium". .
Dès le PEP-3107 en 2006, Python a introduit la fonction d'annotation de fonction, qui a finalement été implémentée dans la version 3.0. Dans la version 3.5, Python a continué à introduire une syntaxe de vérification de type statique (c'est-à-dire PEP-484, astuces de type). Le PEP-483 de 2014 en a même fait un résumé théorique sous le titre « The Theory of Type Hints ». Plus tard, les PEP-526 et PEP-544 furent successivement proposés, et les spécifications pour la vérification de type furent progressivement enrichies.
L'avantage de la vérification de type est de vérifier tôt, de détecter les erreurs de type à l'avance et d'améliorer la cohérence et la maintenabilité du code. (Cela empêche également la chute des cheveux, miaou)
# 不加检查 def greeting(name): return 'Hello ' + name # 添加检查 def greeting(name: str) -> str: return 'Hello ' + name
Comme le montre l'exemple ci-dessus, après avoir ajouté des vérifications, il peut être déterminé au moment de la compilation si les paramètres d'entrée et les valeurs de retour sont de type chaîne.
Avant que Microsoft ne lance pyright, il existait trois outils de vérification statique traditionnels : le mypy
officiel, le pytype
de Google et le pyre-check
de Facebook. La situation à trois est sur le point de se briser.
la documentation de Pyright affirme qu'il possède les fonctionnalités suivantes :
Typeshed
est utilisée. (Remarque : utilisez des fichiers pyi statiques et vérifiez les modules intégrés, les bibliothèques standard et les composants tiers) À cet égard, il n'est pas impuissant. En fait, pyright « repose sur les épaules de géants » et ses fonctions semblent être héritées de plusieurs autres prédécesseurs.
Regardons le mypy officiel. Il a été personnellement développé par Guido van Rossum, le « père de Python », et constitue le choix le plus courant. Il a été lancé très tôt, a une large base d'utilisateurs et possède les fonctionnalités suivantes. la documentation la plus riche et l'expérience communautaire.
En termes d'IDE intégré, tous les éditeurs grand public prennent en charge : PyCharm, Vim, Emacs, Sublime Text, VS Code, Atom... En termes d'expérience dans l'industrie, les projets Instagram et Dropbox démarrés avec py2 La migration vers py3 est de l'utiliser comme garantie.
Ensuite, regardez le pytype de Google. Selon la documentation, il peut :
En regardant le document, j'ai trouvé qu'il avait une fonction assez conviviale, à savoir "Réduction du bruit d'erreur " , pour les erreurs qui n'ont pas besoin d'être modifiées, des commentaires peuvent être ajoutés pour éliminer la vérification de type.
De plus, il y a une autre bonne considération. Afin d'écrire une vérification de type, d'autres modules peuvent être introduits dans le module. Pour ce dernier, pytype a un moyen de le masquer et de le charger uniquement lors de la vérification de type. .
Enfin, je souhaite présenter le pyre-check de Facebook, qui était open source l'année dernière et a reçu de nombreux éloges (c'est peut-être à cause de cela que Microsoft a lancé le projet pyright).
Les fonctions de base sont similaires, mais il a aussi ses points forts. pyre-check peut intégrer le module Watchman. Cet "observateur" surveillera le fichier de code et suivra les modifications. Le droit de Microsoft dispose d'un mode montre, qui aurait dû absorber cela et le rendre plus facile à utiliser (car il n'est pas nécessaire d'installer Watchman et d'autres dépendances en plus).
Pyre-check a également un point fort. Il possède un paramètre de requête, qui peut effectuer des vérifications locales et régionales sur le code source, comme interroger le type d'une expression dans une certaine ligne, interroger toutes les méthodes d'une classe et renvoyer sous forme de liste, etc., etc. Cela évite la nécessité d'une inspection complète.
Les quatre outils de vérification de type ont été introduits. Voici une comparaison récapitulative :
Quant à leurs performances, est-ce vraiment comme le dit pyright, c'est Est-ce que c'est vrai ? la vitesse 5 fois celle des autres ? Les étudiants intéressés peuvent l’essayer. Si vous avez une expérience de son utilisation, veuillez laisser un message pour communiquer avec moi.
Adresse du projet :
https://github.com/python/mypy, https://github.com/Microsoft/pyright, https://github .com/google/pytype, https://github.com/facebook/pyre-check
Cet article est terminé ici Pour d'autres contenus passionnants, vous pouvez suivre le site Web PHP chinoisvidéo python. rubrique tutoriel !
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!