Что означает "# noqa" в комментариях Python?
При поиске в проекте Python я нашел несколько строк с комментариями # noqa
.
import sys
sys.path.append(r'C:\dev')
import some_module # noqa
Что означает noqa
в Python? Это специфично только для Python?
Ответы
Ответ 1
Добавление # noqa
в строку означает, что линтер (программа, которая автоматически проверяет качество кода) не должен проверять эту строку. Любые предупреждения, которые мог сгенерировать код, будут игнорироваться.
Эта строка может иметь что-то, что "выглядит плохо" для линтера, но разработчик понимает и намеревается сделать это по какой-то причине.
Для получения дополнительной информации см. Документацию Flake8 по выбору и игнорированию нарушений.
Ответ 2
noqa = NO-QA (NO Quality Assurance)
Как правило, в программировании на Python игнорируются предупреждения PEP8.
Проще говоря, строки С#noqa в конце будут игнорироваться программами linter и не будут выдавать никаких предупреждений.
Ответ 3
Знаешь что? Даже Гвидо ван Россум (создатель Python) задавал этот вопрос раньше: D
Немного этимология # noqa
:
Раньше это был "nopep8", но когда Flake8 и Pep8 хотели общий квалификатор, @florentx предложил "NoQA", как в "No Quality Assurance" (iirc), и он застрял.
Некоторые основные применения # noqa
(с flake8):
-
# flake8: noqa
: файлы, содержащие эту строку, пропускаются - строки, которые содержат комментарий
# noqa
в конце: не будут выдавать предупреждения -
# noqa: <error>
, например, # noqa: E234
в конце: игнорировать определенные ошибки в строке - можно указать несколько кодов ошибок через запятую
- двоеточие перед списком кодов требуется