Python注释中的“#noqa”是什么意思?


162

在搜索Python项目时,我发现有几行用注释# noqa

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

noqa在Python 中是什么意思?它仅适用于Python吗?


3
noqa最有可能代表no quality assurance。它告诉代码分析软件忽略警告。
Stevoisiak


在我的脑海总是读作“不问”
thrau

Answers:


198

添加# noqa到一行表示该linter(自动检查代码质量的程序)不应检查该行。代码可能已生成的任何警告都将被忽略。

该行可能对短毛绒“看起来不好”,但由于某种原因,开发人员理解并打算将其放在那里。

有关更多信息,请参见Flake8文档,以选择和忽略违规


3
对于python linters,通常是此语句,但是对于其他linters,它可以不同,即javascript w / jshint是:// jshint ignore:linejshint.com/docs
jimf

7
它也可以在PyCharm中使用。简短形式通用# noqa。或# noinspection PyUnresolvedReferences例如特定的长格式。
鲍勃·斯坦

怎么# noqa F0001
youkaichao

5
请注意,对于pycodestyle / pep8 # nopep8,也可以使用imo一点。
OozeMeister

53

noqa = NO-QA(无质量保证)

在Python编程中通常引用它来忽略PEP8警告。

简而言之,linter程序将忽略末尾带有#noqa的行,并且不会发出任何警告。


15

你知道吗?甚至Guido van Rossum(Python的创建者):D 之前也问过这个问题。

有点词源# noqa

它曾经是“ nopep8”,但是当Flake8和Pep8想要一个普通的限定词时,@ florentx像“ No Quality Assurance”(iirc)中一样建议“ NoQA”,并且卡住了。

一些基本用法# noqa(与flake8):

  • # flake8: noqa:跳过包含此行的文件
  • 最后包含# noqa评论的:将不会发出警告
  • # noqa: <error>,例如# noqa: E234 最后:忽略一行中的 特定错误
    • 可以给出多个错误代码,以逗号分隔
    • 代码列表之前的冒号
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.