Heim  >  Artikel  >  Backend-Entwicklung  >  Gemeinsame Nutzung mehrerer Python-Typprüfungstools

Gemeinsame Nutzung mehrerer Python-Typprüfungstools

不言
不言nach vorne
2019-03-27 09:52:231886Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Weitergabe mehrerer Python-Typprüfungstools. Ich hoffe, dass er für Freunde hilfreich ist.

Vor Kurzem hat Microsoft ein Open-Source-Tool zur statischen Typprüfung von Python auf Github veröffentlicht: pyright, das in der Community große Aufmerksamkeit erregt hat.

Microsoft engagiert sich immer mehr in Open-Source-Projekten, ganz zu schweigen von den großen strategischen Ambitionen, Github zu erwerben, sein Open-Source-VS-Code-Editor hat bereits unzählige Fans in der Affenwelt angezogen. Eine Berühmtheit in unserem Python-Kreis (der Autor mehrerer Open-Source-Projekte, einschließlich Requests, Requests-HTML, Responder usw.) ist voll des Lobes dafür.

Pyright, jetzt Open Source, hat einen guten Ruf, also werfen wir einen Blick auf seine Fähigkeiten und stellen nebenbei noch einige andere Tools zur Typprüfung vor.

Wie wir alle wissen, ist Python eine dynamisch typisierte Sprache und der tatsächliche Typ der Variablen ist erst zur Laufzeit bekannt. Dies ist das Merkmal dynamischer Sprachen. Bei Teamarbeit oder Großprojekten sind jedoch die Kosten für die Wartung unvermeidlich. Wie das Sprichwort sagt: „Dynamik macht eine Weile Spaß, aber der Wiederaufbau ist ein Krematorium.“ .

Bereits mit PEP-3107 im Jahr 2006 führte Python die Funktion Annotation ein, die schließlich in Version 3.0 implementiert wurde. In Version 3.5 führte Python weiterhin die statische Typprüfungssyntax ein (z. B. PEP-484, Typhinweise). Im PEP-483 von 2014 wurde sogar eine theoretische Zusammenfassung unter dem Titel „The Theory of Type Hints“ erstellt. Später wurden nacheinander PEP-526 und PEP-544 vorgeschlagen und die Spezifikationen für die Typprüfung schrittweise erweitert.

Der Vorteil der Typprüfung besteht darin, frühzeitig zu prüfen, Typfehler im Voraus zu erkennen und die Konsistenz und Wartbarkeit des Codes zu verbessern. (Es verhindert auch Haarausfall, Miauen)

# 不加检查
def greeting(name):
    return 'Hello ' + name

# 添加检查
def greeting(name: str) -> str:
    return 'Hello ' + name
Wie im obigen Beispiel gezeigt, kann nach dem Hinzufügen von Prüfungen zur Kompilierungszeit festgestellt werden, ob die Eingabeparameter und Rückgabewerte vom Typ String sind.

Bevor Microsoft pyright auf den Markt brachte, gab es drei gängige Tools zur statischen Überprüfung: das offizielle

, das mypy von Google und das pytype von Facebook. Die Dreibeinsituation steht kurz vor dem Bruch. pyre-check

Gemeinsame Nutzung mehrerer Python-Typprüfungstools

in der Dokumentation von pyright wird behauptet, dass es über die folgenden Funktionen verfügt:

    Schnelle Geschwindigkeit. Im Vergleich zu mypy und anderen in Python geschriebenen Prüftools ist es mindestens fünfmal schneller.
  • Hängt nicht von der Python-Umgebung ab. Es ist in TypeScript geschrieben, läuft auf dem Knoten und ist nicht auf die Python-Umgebung oder Pakete von Drittanbietern angewiesen.
  • Hochgradig konfigurierbar. Unterstützt die kostenlose Konfiguration und unterstützt die Angabe verschiedener Laufumgebungen (PYTHONPATH-Einstellungen, Python-Version, Plattformziel).
  • Die Inspektionsgegenstände sind vollständig. Unterstützt die Typprüfung und die Prüfung anderer Syntaxelemente (wie PEP-484, PEP-526, PEP-544) sowie die Prüfung von Funktionsrückgabewerten, Klassenvariablen, globalen Variablen und sogar Bedingungsschleifenanweisungen
  • Befehlszeilentools. Es enthält zwei VS-Code-Plug-Ins: ein Befehlszeilentool und integrierte Stubs für das Language Server Protocol
  • . Es wird eine Kopie von
  • verwendet. (Hinweis: Verwenden Sie statische PYI-Dateien und überprüfen Sie integrierte Module, Standardbibliotheken und Komponenten von Drittanbietern.) Typeshed
  • Sprachdienstfunktionen. Hover-Eingabeaufforderungsinformationen, Symboldefinitionssprung und Echtzeit-Bearbeitungsfeedback
In dieser Hinsicht ist es nicht leistungslos. Tatsächlich steht Pyright „auf den Schultern von Riesen“, und seine Funktionen scheinen von mehreren anderen Vorgängern geerbt zu sein.

Schauen wir uns das offizielle Mypy an, das von Guido van Rossum, dem „Vater von Python“, persönlich entwickelt wurde. Es ist die am weitesten verbreitete Wahl, hat eine große Benutzerbasis und verfügt über die umfangreichste Dokumentation und Community-Erlebnis.

In Bezug auf die integrierte IDE unterstützen alle Mainstream-Editoren: PyCharm, Vim, Emacs, Sublime Text, VS Code, Atom ... In Bezug auf Branchenerfahrung begannen Instagram- und Dropbox-Projekte mit py2. Die Migration auf py3 ist um es als Garantie zu nutzen.

Dann schauen Sie sich den Pytype von Google an. Laut Dokumentation kann er:

    Häufige Fehler wie Rechtschreibfehler und Funktionsaufruffehler markieren
  • Benutzerdefinierte Typen verbessern Anmerkung
  • Unterstützt das Generieren von Typanmerkungen für PYI-Dateien
Als ich mir das Dokument ansah, stellte ich fest, dass es eine Funktion hat, die recht benutzerfreundlich ist, nämlich „

Fehlerrauschunterdrückung“. “ , für Fehler, die nicht geändert werden müssen, können Kommentare hinzugefügt werden, um eine Typprüfung zu vermeiden.

Darüber hinaus gibt es eine weitere gute Überlegung, andere Module in das Modul einzuführen. Für letzteres gibt es eine Möglichkeit, es auszublenden und nur bei der Typprüfung zu laden .

Abschließend möchte ich Facebooks Pyre-Check vorstellen, der letztes Jahr als Open Source verfügbar war und viel Lob erhalten hat (vielleicht hat Microsoft deshalb das Pyrright-Projekt ins Leben gerufen).

Die Grundfunktionen sind ähnlich, aber es hat auch seine Highlights. Pyre-Check kann das Watchman-Modul integrieren. Dieser „Beobachter“ überwacht die Codedatei und verfolgt die Änderungen. Microsofts Pright verfügt über einen Überwachungsmodus, der dies hätte absorbieren und die Verwendung erleichtern sollen (da Watchman und andere Abhängigkeiten nicht zusätzlich installiert werden müssen).

Pyre-Check verfügt auch über einen Abfrageparameter, der lokale und regionale Prüfungen des Quellcodes durchführen kann, z. B. die Abfrage des Typs eines Ausdrucks in einer bestimmten Zeile, die Abfrage aller Methoden einer Klasse und die Rückgabe B. als Liste usw. usw. Dadurch entfällt die Notwendigkeit einer umfassenden Prüfung.

Die vier Typprüfungstools wurden vorgestellt:

Gemeinsame Nutzung mehrerer Python-Typprüfungstools

Was ihre Leistung betrifft, entspricht sie wirklich dem, was der Urheberrechtsinhaber gesagt hat die Geschwindigkeit fünfmal so hoch wie die der anderen? Interessierte Studierende können es ausprobieren. Wenn Sie Erfahrung damit haben, hinterlassen Sie bitte eine Nachricht, um mit mir zu kommunizieren.

Projektadresse:

https://github.com/python/mypy, https://github.com/Microsoft/pyright, https://github .com/google/pytype, https://github.com/facebook/pyre-check

Dieser Artikel ist hier zu Ende. Weitere spannende Inhalte finden Sie auf der chinesischen PHP-WebsitePython-Video Tutorial Kolumne!

Das obige ist der detaillierte Inhalt vonGemeinsame Nutzung mehrerer Python-Typprüfungstools. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen