Verbessern Sie die Qualität Ihres Python-Codes — ein Überblick über Python Linters

May 29, 2025
12 min read
Loading the Elevenlabs Text to Speech AudioNative Player...

Einleitung
Im Alltag sind wir von verschiedenen Regeln umgeben, die unser Leben erleichtern sollen. Zum Beispiel müssen Autofahrer die Straßenverkehrsordnung beachten. Dadurch weiß jeder Fahrer, wie er sich auf der Straße verhalten soll und welche Regeln zu befolgen sind. Das Fahren ist dadurch sicherer, das Verhalten der Fahrer vorhersehbar und jeder weiß, wie er fahren muss, damit andere seine Absichten verstehen. Für Python gibt es ein Äquivalent zur Straßenverkehrsordnung, das Python Enhancement Proposal (PEP). Dieses Dokument enthält Regeln, um deinen Python-Code lesbarer und konsistenter zu machen. Leider haben selbst erfahrene Programmierer manchmal Schwierigkeiten, sich an alle im PEP festgelegten Regeln zu erinnern. Deshalb wurden Python linters entwickelt.

Was sind Linters?
Linters sind Programme, die Hinweise zur Codequalität geben, indem sie Warnungen und Fehler anzeigen. Sie können Fehler im Python-Code erkennen, ungültige Code-Muster bemerken und Elemente finden, die nicht deinen Konventionen entsprechen. Python linters haben viele Vorteile, wie zum Beispiel:

  • Verhindern von Bugs im Projekt.
  • Machen den Code für jeden python programmer lesbar.
  • Finden unnötiger Code-Teile.
  • Machen den Code sauberer und weniger komplex.

Natürlich hat jeder Ansatz auch Nachteile:

  • Linters können false positives liefern.
  • Der Prozess kann zeitaufwändig sein.
  • Einige Fehler können übersehen werden.

Es gibt viele Python linters, die du in deiner täglichen Arbeit nutzen kannst. Logical lint informiert über tatsächliche Codefehler, statistical lint hilft dem Programmierer, Formatierungsprobleme zu erkennen. Ich zeige, wie man die beliebtesten Linters installiert und ausführt, wie:

  • Pylint (Version 2.12.1)
  • Flake8 (Version 4.0.1)
  • PyFlakes (Version 2.4.0)

Außerdem findest du einen Vergleich der jeweiligen Outputs. Das kann dir helfen, den Linter zu wählen, der am besten zu deinen Bedürfnissen passt.

Beispiel für schlechten Python-Code
Schreiben wir einen Code, der mehrere Fehler enthält und die PEP-Regeln nicht beachtet. Dann prüfen wir die Python code quality mit verschiedenen Linters in der Standardkonfiguration.

Hier einige Probleme im Beispielcode:

  • unnötiges semicolon in import math;
  • fehlende newlines und whitespaces
  • fehlender docstring
  • ungenutzte global_value und argument1
  • falscher naming style
  • Auswahl eines Elements aus der Liste mit falschem Index
  • division by zero Ausdruck
  • Aufruf einer nicht existierenden Methode
  • Rückgabe eines undefinierten Werts
  • unnötiges pass statement

Pylint
Pylint ist ein Tool zur statischen Analyse von Python-Code, das Programmier- und Stilfehler, bugs, ungültige Codekonstrukte und Inkonsistenzen mit den Coding Standards findet. Außerdem kann Pylint an die eigenen Bedürfnisse angepasst werden, indem einige der gemeldeten Fehler unterdrückt werden, z.B. können output messages nur Informationen über die wichtigsten Programmierfehler enthalten.

Eine Pylint-Nachricht besteht aus fünf Fehlertypen:

  • R – du musst den Code nach guten Programmierpraktiken refaktorisieren.
  • C – dein Code verstößt gegen die Coding Standards Convention.
  • W – Warnungen zu stilistischen Problemen oder kleineren Programmierfehlern.
  • E – Fehler, wichtige Programmierprobleme.
  • F – fatal errors, die die Codeverarbeitung stoppen.

Um Pylint zu installieren, verwende pip.
Um diesen Python linter auszuführen, schreibe einfach:
in deine Konsole, wobei script.py der Name des Python-Skripts mit unserem schlechten Beispielcode ist.

Die Pylint-Ausgabe informiert über 15 Probleme, die behoben werden sollten, wenn wir die Python code quality verbessern wollen. Fassen wir sie in einer Tabelle zusammen:

Pylint hat uns über alle erwarteten Fehler informiert, außer über Fehler beim Auswählen eines Elements aus einer Liste mit falschem Index, division by zero und fehlende whitespaces. Zusätzlich hat Pylint darauf hingewiesen, dass nach der if-else-Anweisung der Code unreachable ist, also nie ausgeführt wird. Am Ende der Pylint-Nachricht sehen wir, dass Pylint den Code mit -13.00/10 bewertet hat (ja, minus dreizehn!).

Flake8
Ein weiteres Beispiel für einen Python linter ist Flake8. Es gibt einen Bericht aus, der Informationen über falschen Stil, Syntaxinkonsistenzen und Komplexitätsfehler enthält. Es gibt viele zusätzliche Optionen, mit denen du Flake8 an deine Bedürfnisse anpassen kannst.

Flake8 führt drei Tools mit einem einzigen Befehl flake8 aus:

  • pycodestyle – Stilüberprüfung
  • PyFlakes – Syntaxüberprüfung
  • McCabe script von Ned Batchelder – Komplexitätsüberprüfung

Der Output von Flake8 besteht aus Fehlertypen wie:

  • E – Stilfehler
  • W – Stilwarnungen
  • F – Syntaxfehler
  • C – Komplexitätsfehler
  • N – Fehler bei den Namenskonventionen

Um Flake8 zu installieren, verwende pip.
Das Ausführen von Flake8 ist einfach. Schreibe:
und sieh dir die Ergebnisse an.

Flake8 hat 9 mögliche Fehler gemeldet. Fassen wir sie in einer Tabelle zusammen.

Flake8 hat das unnötige semicolon, fehlende newlines und whitespaces, ein ungenutztes lokales Argument (aber nicht das ungenutzte globale Argument), Rückgabe eines undefinierten Werts und den Aufruf einer nicht existierenden Methode erkannt. Diese Ausgabe ist definitiv weniger detailliert als die von Pylint, aber genau deshalb bevorzugen einige Entwickler Flake8 – es berichtet nur über die wichtigsten Stil-, Syntax- und Komplexitätsfehler.

PyFlakes
PyFlakes analysiert Python-Code auf einfache Fehler. PyFlakes beschwert sich nie über Stil und versucht sehr, keine false positives zu melden.

Um PyFlakes zu installieren, verwende pip:
Das Ausführen dieses Python linter ist sehr ähnlich wie bei Pylint und Flake8. Schreibe einfach den Programmnamen und den Pfad zu deinem Code wie im Beispiel:

PyFlakes hat nur 3 Probleme gemeldet. Fassen wir sie in einer Tabelle zusammen.

PyFlakes meldet nur den Aufruf einer nicht existierenden Methode und ein ungenutztes Argument. Die Ausgabe ist klar und Fehler werden nicht in bestimmte Typen kategorisiert.

Welcher Python linter ist der beste für dein Projekt?Objektiv das beste Programmierwerkzeug zu wählen, ist wahrscheinlich unmöglich. Es ist so, dass einige Technologien und Tools für einen Projekttyp geeignet sind, während andere für andere Projekttypen besser sind. Wie wählt man also die richtigen linters für sein Projekt? Die in diesem Artikel genannten Python linters sind open-source und kostenlos verfügbar; sie wurden von vielen Profis getestet und sind bei Entwicklern weltweit sehr beliebt. Wenn du deinen Python-Code mit linters verbessern möchtest – und du solltest sie wirklich nutzen – probiere zuerst die in diesem Artikel empfohlenen aus.

Fazit
In diesem Artikel habe ich drei linters verglichen: Pylint, Flake8 und PyFlakes. Jedes Programm wurde ohne zusätzliche Einstellungen ausgeführt. Pylint hat die meisten Fehler gemeldet, darunter auch einige, die wir nicht erwartet hatten (unreachable code nach der if-else-Anweisung). Flake8 hat weniger Fehler gemeldet als Pylint. Es hat uns nicht über fehlende docstrings, falsche naming styles und das unnötige pass statement informiert. Allerdings hat nur Flake8 fehlende whitespaces gemeldet. PyFlakes hat die kürzeste Fehlerliste zurückgegeben – es hat nur das ungenutzte Argument, den undefinierten Wert und den Aufruf einer nicht existierenden Methode gemeldet. Keiner der getesteten linters hat uns vor der Auswahl eines Elements aus einer Liste mit falschem Index oder dem division by zero Ausdruck gewarnt. Das ist jedoch verständlich, da dies keine stilistischen, sondern logische Fehler sind.

Es ist schwer zu entscheiden, welcher der getesteten linters der beste ist. Beachte, dass jedes Tool mit zusätzlichen Einstellungen angepasst werden kann. Ich hoffe jedoch, dass der Artikel dir geholfen hat, den linter zu wählen, der am besten zu deinen Bedürfnissen passt. Kontaktiere uns, wenn du Unterstützung von erfahrenen Python programmers für dein Projekt benötigst.

Unterschiede zwischen airflow 1-10-x und 2-0

Was ist visuelle suche und wie funktioniert sie

Der beste cloud speicher fur unternehmen im jahr 2021

Share this post
Datenwissenschaft
MORE POSTS BY THIS AUTHOR

Curious how we can support your business?

TALK TO US