Maison  >  Article  >  développement back-end  >  Partage de plusieurs outils de vérification de type Python

Partage de plusieurs outils de vérification de type Python

不言
不言avant
2019-03-27 09:52:231886parcourir

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.

Partage de plusieurs outils de vérification de type Python

la documentation de Pyright affirme qu'il possède les fonctionnalités suivantes :

  • Vitesse rapide. Comparé à mypy et à d'autres outils de vérification écrits en Python, il est 5 fois ou plus plus rapide.
  • Ne dépend pas de l'environnement Python. Il est écrit en TypeScript, s'exécute sur un nœud et ne repose pas sur l'environnement Python ou sur des packages tiers.
  • Hautement configurable. Prend en charge la configuration gratuite et prend en charge la spécification de différents environnements d'exécution (paramètres PYTHONPATH, version Python, cibles de plate-forme).
  • Les éléments d'inspection sont complets. Prend en charge la vérification de type et la vérification d'autres éléments de syntaxe (tels que PEP-484, PEP-526, PEP-544), ainsi que la vérification des valeurs de retour de fonction, des variables de classe, des variables globales et même des instructions de boucle conditionnelle
  • outils de ligne de commande. Il contient deux plug-ins VS Code : un outil de ligne de commande et un protocole de serveur de langage
  • Stubs intégrés. Une copie de 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)
  • Fonctionnalités du service linguistique. Survolez les informations d'invite, le saut de définition de symbole et les commentaires d'édition en temps réel

À 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 :

  • Marquer les erreurs courantes, telles que les fautes d'orthographe et les erreurs d'appel de fonction
  • Améliorer les types personnalisés. Annotation
  • Prend en charge la génération d'annotations de type pour les fichiers pyi

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 :

Partage de plusieurs outils de vérification de type Python

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer