Was bedeutet '# noqa' in Python-Kommentaren?

161

Beim Durchsuchen eines Python-Projekts habe ich einige Zeilen gefunden, die mit kommentiert wurden # noqa.

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

Was noqabedeutet in Python? Ist es nur für Python spezifisch?

Ishpreet
quelle
3
noqasteht höchstwahrscheinlich für no quality assurance. Es weist die Code-Analyse-Software an, Warnungen zu ignorieren.
Stevoisiak
In meinem Kopf liest es immer als „keine Fragen“
thrau

Antworten:

198

Das Hinzufügen # noqazu einer Zeile zeigt an, dass der Linter (ein Programm, das die Codequalität automatisch überprüft) diese Zeile nicht überprüfen sollte. Alle Warnungen, die der Code möglicherweise generiert hat, werden ignoriert.

Diese Zeile hat möglicherweise etwas, das für den Linter "schlecht aussieht", 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 .

Jimf
quelle
3
für Python-Linters ist es normalerweise diese Aussage, aber für andere Linters kann es anders sein, dh Javascript mit jshint ist: // jshint ignore:line( jshint.com/docs )
jimf
7
Es funktioniert auch in PyCharm. Kurzform generisch # noqa. Oder # noinspection PyUnresolvedReferenceszum Beispiel eine lange Form .
Bob Stein
Wie wäre es # noqa F0001?
Youkaichao
5
Beachten Sie, dass für pycodestyle / pep8 # nopep8auch verwendet werden kann, was imo etwas klarer ist.
OozeMeister
53

noqa = NO-QA (KEINE Qualitätssicherung)

In der Python-Programmierung wird allgemein darauf verwiesen, die PEP8- Warnungen zu ignorieren .

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

Vishvajit Pathak
quelle
15

Weißt du was? Sogar Guido van Rossum (der Schöpfer von Python) hat diese Frage schon einmal gestellt : 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 am Ende einen # noqaKommentar enthalten : geben keine Warnungen aus
  • # noqa: <error>zB # noqa: E234 am Ende : Ignorieren Sie bestimmte Fehler in einer Zeile
    • Es können mehrere Fehlercodes angegeben werden, die durch Kommas getrennt sind
    • Der Doppelpunkt vor der Liste der Codes ist erforderlich
YaOzI
quelle