it-swarm.com.de

Was bedeutet "# noqa" in Python Kommentaren?

Beim Durchsuchen eines Python Projektes habe ich ein paar mit # noqa Kommentierte Zeilen gefunden.

import sys
sys.path.append(r'C:\dev')
import some_module   # noqa

Was bedeutet noqa in Python? Ist es spezifisch für Python nur?

87
Ishpreet

Das Hinzufügen von # noqa Zu einer Zeile bedeutet, dass der Linter (ein Programm, das die Codequalität automatisch überprüft) diese Zeile nicht überprüfen sollte. Eventuell vom Code erzeugte Warnungen werden ignoriert.

Diese Zeile mag für den Linter etwas "Schlechtes" haben, aber der Entwickler versteht und beabsichtigt, dass sie aus irgendeinem Grund vorhanden ist.

Weitere Informationen finden Sie in der Flake8-Dokumentation zum Auswählen und Ignorieren von Verstößen .

114
jimf

noqa = NO-QA (KEINE Qualitätssicherung)

Es wird allgemein in Python Programmierung zum Ignorieren der PEP8 Warnungen verwiesen.

In einfachen Worten, Zeilen mit #noqa am Ende werden von den linter-Programmen ignoriert und es werden keine Warnungen ausgegeben.

30

Weißt du was? Sogar Guido van Rossum (der Schöpfer von Python) stellte diese Frage zuvor : D

Ein bisschen Etymologie von # noqa :

Früher war es "nopep8", aber als Flake8 und Pep8 ein gemeinsames Qualifikationsmerkmal wollten, schlug @florentx "NoQA" wie in "No Quality Assurance" (iirc) vor und es blieb hängen.

Einige grundlegende Verwendungen von # noqa (mit flake8 ):

  • # flake8: noqa: Dateien, die diese Zeile enthalten, werden übersprungen
  • Zeilen die einen # noqa - Kommentar enthalten am Ende: gibt keine Warnungen aus
  • # noqa: <error>, Z. B. # noqa: E234 am Ende: ignoriere spezifische Fehler in einer Zeile
    • es können mehrere durch Komma getrennte Fehlercodes angegeben werden
    • der Doppelpunkt vor der Liste der Codes ist erforderlich
2
YaOzI