Що означає "# noqa" в коментарях Python?


162

Під час пошуку проекту Python я знайшов кілька коментованих рядків # noqa.

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

Що noqaозначає Python? Це специфічно лише для Python?


3
noqaнайімовірніше, стоїть на no quality assurance. Він повідомляє програмне забезпечення для аналізу коду ігнорувати попередження.
Стевойасяк


У моїй голові це завжди звучить як "ніяких запитань не задається"
thrau

Відповіді:


198

Додавання # noqaдо рядка означає, що лінійка (програма, яка автоматично перевіряє якість коду) не повинна перевіряти цей рядок. Будь-які попередження, які може створити код, будуть ігноровані.

У цій лінійці може бути щось, що погано виглядає на літері, але розробник розуміє і має намір це з якоїсь причини.

Для отримання додаткової інформації дивіться документацію Flake8 щодо вибору та ігнорування порушень .


3
для лайнерів python, це твердження зазвичай, але для інших лінерів воно може бути іншим, тобто javascript w / jshint є: // jshint ignore:line( jshint.com/docs )
jimf

7
Він працює і в PyCharm. Коротка форма родова # noqa. Або довга форма, конкретна, # noinspection PyUnresolvedReferencesнаприклад.
Боб Штейн

Як щодо # noqa F0001?
youkaichao

5
Зауважте, що для pycodestyle / pep8 # nopep8також можна використовувати, що трохи зрозуміліше, imo.
OozeMeister

53

noqa = NO-QA (NO забезпечення якості)

Зазвичай в програмі Python йдеться про ігнорування попереджень PEP8 .

Простими словами, рядки, що мають #noqa в кінці, лінійні програми будуть ігнорувати, і вони не піднімуть жодних попереджень.


15

Знаєш, що? Навіть Гвідо ван Россум (творець Пітона) ставив це питання раніше : D

Трохи Етимологія з# noqa :

Раніше це було "nopep8", але коли Flake8 та Pep8 хотіли, щоб загальний класифікатор @florentx запропонував "NoQA", як у "Без забезпечення якості" (iirc), і він застряг.

Деякі основні звичаї з# noqaflake8 ):

  • # flake8: noqa: файли, що містять цей рядок , пропускаються
  • рядки, що містять # noqaкоментар наприкінці : не видаватимуть попереджень
  • # noqa: <error>, наприклад, # noqa: E234 наприкінці : ігноруйте конкретні помилки у рядку
    • можуть бути задані кілька кодів помилок, розділених комою
    • двокрапка перед списком кодів
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.