Scannen von Python-Code: Die beste Wahl für die statische Typprüfung von Mypy

 

Inhaltsverzeichnis

einführen

mypy-Funktionen

Installation und Konfiguration

Befehlszeilenparameter

Nutzen Sie die Übung

Referenzdokumentation


Hinweis: Nachfolgende Technologiefreigaben, sofortige Updates sowie zeitnahere technische Informationen und technische Lernmaterialien werden auf dem offiziellen Konto CTO Plus veröffentlicht . Bitte folgen Sie dem offiziellen Konto: CTO Plus

Die statische Typprüfung ist ein wichtiges Werkzeug in der modernen Softwareentwicklung. Sie kann uns helfen, potenzielle Typfehler beim Schreiben von Code zu finden und die Lesbarkeit und Wartbarkeit des Codes zu verbessern. Unter den vielen statischen Typprüfungstools ist mypy eine beliebte und leistungsstarke Wahl. In diesem Artikel werde ich die Eigenschaften, Verwendung und praktischen Erfahrungen von mypy ausführlich vorstellen.

Dieser Artikel „Python-Code-Scannen: Die beste Wahl für die statische Typprüfung von Mypy“ gehört zum siebten Artikel in der Reihe „Python-Code-Spezifikationen und -Scannen“. Die ersten sechs Artikel können entsprechend Ihrer eigenen Situation konsultiert werden. Gleichzeitig , Follow-up-Artikel aus dem öffentlichen Account CTO Plus sind willkommene Artikel:

Codespezifikationen und Inhalt der statischen Scanserie:

  1. Statisches Scannen von Python-Code auf Unternehmensebene – Einführung in Codespezifikationen, Logik, Grammatik, Sicherheitsprüfungen und automatische Codeanordnung
  2. Lesen Sie die Python PEP8-Codespezifikation durch
  3. Python-Code-Scanning: Python-Linter-Tool der neuen Generation Ruff
  4. Python-Code-Scanning: Ein Artefakt zur Verbesserung der Qualität des Python-Codes – ausführliche Erklärung und Nutzungsanleitung für Pylint
  5. Python-Code-Scanning: Leichtes Python-Tool zur statischen Code-Analyse Pyflakes
  6. Python-Code-Scanning: ein leistungsstarkes Tool zur Python-Codespezifikation und Fehlerprüfung – flake8 ausführliche Erklärung und Übung
  7. Python-Code-Scanning: Die beste Wahl für die statische Typprüfung von Mypy
  8. Python-Code-Scanning: Redundanz im Python-Code automatisch entfernen – Tipps und Beispiele zur Verwendung von Autoflake
  9. Python-Code-Scanning: ein leistungsstarkes Tool zur Formatierung von Python-Code – ausführliche Erklärung und Best Practices
  10. Scannen von Python-Code: Die schwarze Magie der Formatierung von Python-Code mit einem Klick – Tutorial zur schwarzen Verwendung
  11. Python-Code-Scannen: Leitfaden zur automatischen Sortierung von Importanweisungen und isor-Nutzungsanleitungen und Beispielen
  12. Python-Code-Scanning: ein Tool zur automatischen Reparatur des Python-Codestils – autopep8 ausführliche Erklärung und Beispiele
  13. Python-Code-Scanning: Codespezifikationen und Fehlerprüfung in der Konfiguration und Verwendung von project-pyproject-flake8
  14. Python-Code-Scanning: Code-Sicherheitslücken-Scanning-Bandit auf Unternehmensebene

einführen

Mypy ermöglicht der dynamischen Sprache Python die Fähigkeit zur statischen Typprüfung und ist ein statischer Code-Typprüfer. Es kann uns helfen, Typfehler im Code früher zu finden und so unnötige Debugging- und Wartungszeiten zu reduzieren.

Durch die Verwendung der Typanmerkungsfunktion von Python kann sichergestellt werden, dass der Variablentyp konsistent und immer wie definiert ist und eine Liste aufgrund einer Zuweisung in der Mitte nicht in eine Zeichenfolge umgewandelt wird.

Mypy kann normalerweise Fehler erkennen, die der Addition von Zeichenfolgen und Zahlen ähneln, unabhängig davon, ob diese direkt in Hartcode geschrieben sind oder eine Zeichenfolgenvariable plus eine Ganzzahlvariable sind. Im Code wird deklariert, dass a_list eine Liste ist, die nur Zahlen enthält. Wenn eine Zeichenfolge übergeben wird, wird ein Fehler gemeldet. Dieser ist besser als Pyflakes. Wenn Sie diesen Bedarf haben, können Sie Mypy wählen.

mypy- Funktionen

mypy ist ein Python-Tool zur statischen Typprüfung mit den folgenden Funktionen:

  1. Statische Typprüfung: mypy kann eine statische Typprüfung für Python3-Code durchführen, d. h. die Typfehler im Code zur Kompilierungszeit prüfen. Es verwendet Typanmerkungen, um die Typen von Variablen und Funktionen anzugeben, und prüft die Typkonsistenz zur Kompilierungszeit.

  1. Leistungsstarke Funktionen, integriert in das Typsystem: mypy ist eng in das Typsystem von Python integriert. Mypy unterstützt eine Vielzahl von Typen, einschließlich Basistypen (Ganzzahlen, Gleitkommazahlen, Zeichenfolgen, Listen, Wörterbücher), Containertypen, benutzerdefinierte Typen usw. , und kann erweiterte Funktionen wie Funktionsüberladung und Generika unterstützen. Für die Einführung und Verwendung dieser Python-Typen beachten Sie bitte die Erklärung der Python-Typen durch den öffentlichen CTO Plus .

  1. Flexibel und anpassbar: mypy bietet eine Fülle von Konfigurationsmöglichkeiten, die je nach Projektanforderungen angepasst werden können. Wir können über Konfigurationsdateien oder Befehlszeilenparameter Regeln festlegen und Listen ignorieren, um sie an verschiedene Projekte und Teams anzupassen.

  1. Skalierbarkeit: mypy kann benutzerdefinierte (Plug-in-)Typen und Prüfregeln erweitern. Wir können unsere eigenen Typprüfregeln entsprechend unseren eigenen Anforderungen definieren, um sie an weitere Nutzungsszenarien anzupassen (z. B. unterschiedliche Projekte und Teamanforderungen).

  1. Portabilität: mypy kann auf einer Vielzahl von Plattformen ausgeführt werden, darunter Linux, macOS, Windows usw.

  1. Kann in andere Tools integriert werden: mypy kann in andere Tools wie IDE-Editoren, statische Analysetools, kontinuierliche Integrationssysteme und Codeüberprüfungstools usw. integriert werden, sodass der Code während des Entwicklungsprozesses in Echtzeit überprüft werden kann Es kann zeitnah Feedback gegeben werden, um die Entwicklungseffizienz und die Codequalität zu verbessern.

  1. Gleichzeitig unterstützt mypy Python 2 und Python 3.

Installation und Konfiguration

Mypy kann über den pip-Befehl wie folgt installiert werden: pip install mypy

关于与IDE PyCharm的集成使用,可以参考前面的文章Ruff和pylint的使用,也简单,此处不做论述。

命令行参数

此处我总结下Mypy工具常用的一些命令行参数,其他的可以参考官方文档:

--strict:启用严格模式,会检查更多的类型错误。

--ignore-missing-imports:忽略缺少的导入。

--follow-imports=<mode>:设置导入模块的方式,可选值为"silent"、"skip"和"error"。

--disallow-untyped-defs:禁止未注释的函数和方法没有类型注解。

--disallow-untyped-calls:禁止未注释的函数和方法的调用没有类型注解。

使用实践

在实际使用mypy的过程中,可以根据以下经验来提高检查的效果:

1. 配置规则:根据项目的需求,可以通过配置文件或命令行参数来设置规则和忽略列表。可以参考mypy的官方文档和社区的经验,选择适合自己项目的规则。

2. 定期检查:建议定期对代码进行类型检查,以保持代码的质量和可维护性。可以在代码提交前或持续集成环境中执行检查,帮助开发者及时发现和修复类型错误。

3. 关注警告:除了类型错误,mypy还会输出警告信息。有时警告可能不是严重的问题,但也值得关注。可以根据项目的需求,决定是否修复警告。

4. 结合编辑器:建议在编辑器中集成mypy,以便在开发过程中实时检查代码。许多流行的编辑器,如VS Code和PyCharm,都提供了mypy的插件和集成功能。

添加类型注解:在Python代码中,使用类型注解来指定变量和函数的类型。例如,可以使用`int`来注解整数类型,使用`str`来注解字符串类型。关于类型注解的详细使用和介绍,请关注公众号CTO Plus后续的文章。

接下来是一个简单的使用示例

  1. 创建Python示例代码

Zuerst erstellen wir eine Python-Datei myfile.py und verwenden Typanmerkungen, um die Typinformationen von Variablen und Funktionen zu beschreiben.

def add_numbers(a, b):

gib a + b zurück

Fügen Sie der Funktion eine Typanmerkung hinzu

def add_numbers(a: int, b: int) -> int:

gib a + b zurück

Sowohl „a“ als auch „b“ sind vom Typ „int“ und die Funktion gibt einen „int“-Wert zurück.

  1. Auf Typfehler prüfen

Führen Sie den Befehl mypy im Terminal aus, um zu überprüfen, ob die Datei Typfehler enthält. Zum Beispiel: mypy myfile.py.

  1. Das Problem lösen

Wenn mypy Typfehler findet, druckt mypy den Ort, die Beschreibung und die Typinformationen für jeden Typfehler. Mithilfe dieser Informationen können wir Typfehler im Code lokalisieren und beheben, um diese Probleme zu lösen.

Wenn der Code keine Typfehler aufweist, gibt mypy nichts aus.

  1. Kontinuierliche Überwachung

Konfigurieren Sie das Mypy-Plugin im Editor so, dass beim Schreiben von Code kontinuierlich nach Typfehlern gesucht wird.

  1. Integriert in den Kompilierungsprozess

Integrieren Sie mypy in den Kompilierungsprozess, um sicherzustellen, dass der Code die Typprüfung reibungslos bestehen kann.

Ausführungsprüfung: Führen Sie den folgenden Befehl in der Befehlszeile aus, um eine statische Typprüfung für den angegebenen Python-Code durchzuführen:

Natürlich können wir das Projekt auch im gesamten Verzeichnis erkennen. Wenn unser Projektverzeichnis beispielsweise /path/to/code ist, führen Sie einfach den folgenden Befehl aus.

mypy /path/to/code

Dadurch werden alle Python-Dateien unter dem angegebenen Pfad einer Typprüfung unterzogen und Typfehler und Warnungen ausgegeben.

Referenzdokumentation

  1. mypy 1.5.1 Dokumentation
  2. Python-Codespezifikationen: Statisches Scannen von Code auf Unternehmensebene – Codespezifikationen, Logik, Syntax, Sicherheitsprüfungen und automatische Anordnung von Codespezifikationen (1)_pycharm Überprüfen Sie die Codespezifikationen_SteveRockets Blog-CSDN-Blog
  3. https://blog.csdn.net/zhouruifu2015/article/details/129877179

Python-Kolumne
https://blog.csdn.net/zhouruifu2015/category_5742543


Weitere Informationen · Durchsuchen Sie das öffentliche WeChat-Konto [ CTO Plus ] und folgen Sie ihm, um weitere Informationen zu erhalten. Lassen Sie uns gemeinsam lernen und kommunizieren.

Eine Beschreibung des öffentlichen Kontos finden Sie unter dem folgenden Link


Für weitere spannende Neuigkeiten folgen Sie meinem offiziellen Account und lernen und wachsen Sie gemeinsam.

Über Articulate „Seien Sie ein Träger von Wissen und Technologie. Seien Sie ein Enthusiast des lebenslangen Lernens. Seien Sie ein technischer Kreis mit Tiefe und Breite.“ Ich wollte schon immer Fähigkeiten im beruflichen Bereich entwickeln https://mp.weixin.qq. com icon-default.png?t=N7T8/ s?__biz=MzIyMzQ5MTY4OQ==&mid=2247484278&idx=1&sn=2b774f789b4c7a2ccf10e465a1b9def6&chksm=e81c2070df6ba966026fd7851efa824b5e2704e3fd34e 76228ca4ce64d93f7964cd4abe60f2b#rd

Standard-Bibliotheksreihe – empfohlene Lektüre:

Empfohlene
Lektüre:

Supongo que te gusta

Origin blog.csdn.net/zhouruifu2015/article/details/132832127
Recomendado
Clasificación