在搜索Python项目时,我发现了一些注释# noqa
的行。
import sys
sys.path.append(r'C:\dev')
import some_module # noqa
noqa
在Python中意味着什么?它仅适用于Python吗?
答案 0 :(得分:89)
在行中添加# noqa
表示linter(自动检查代码质量的程序)不应检查此行。代码可能生成的任何警告都将被忽略。
这条线可能有一些"看起来很糟糕"对于linter,但开发人员理解并打算出于某种原因将其存在。
有关详细信息,请参阅Flake8 documentation for Selecting and Ignoring Violations。
答案 1 :(得分:20)
答案 2 :(得分:1)
在我正在使用的库中找到#noqa指令后,来到这里。从来没有听说过,我在Google上搜索后自然就来到了这里。这里提供的答案是足够的,但我想为那些好奇的人(我当然是)提供一些进一步的说明
# noqa
是从先前使用的#nopep8语法演变而来的
flake8版本
# noqa
受IDE(例如PyCharm)支持,并与其结合使用
内置的代码检查工具。
# noqa
可以用作预提交指令,例如
提交检查过程必须完成
# noqa
可用于忽略所有警告或给定特定警告
忽视。示例:#noqa:F401-这将忽略未使用的
导入的模块警告。
作为示例,请考虑以下代码:
import os
print("Hello, world!)
此代码导入os模块,但不使用它。如果要使用#noqa工具禁止显示Pep8警告,可以将其写为:
import os # noqa
print("Hello, world!)
这将忽略所有警告。但是,如果只想忽略特定警告(已导入但未使用PEP8 F401),则可以这样进行:
import os # noqa: F401
print("Hello, world!)
我已经发表了一篇文章,其中包含noqa examples,并详细说明了上述几点。
答案 3 :(得分:0)
你知道吗?甚至Guido van Rossum(Python的创建者)asked this question before:D
它曾经是“ nopep8”,但是当Flake8和Pep8想要一个共同点时 限定词@florentx建议使用“无质量保证”中的“ NoQA” (iirc)并卡住了。
Some basic usages of # noqa
(带有flake8):
SELECT *
FROM Registrations R
INNER JOIN Programs P ON R.ProgramID = P.ProgramID
LEFT OUTER JOIN Customers C ON R.CustomerID = C.CustomerID
:包含这一行的文件被跳过 id| name | level | boss_id |
--|----------|--------|----------|
1 | User A | 1 | 5 |
2 | User B | 1 | 5 |
3 | User C | 1 | 6 |
4 | User D | 1 | 6 |
5 | Leader A | 2 | 7 |
6 | Leader B | 2 | 7 |
7 | Boss A | 3 | 0 |
注释 的行:不会发出警告User A
User B
User C
User D
,例如,# flake8: noqa
:忽略一行中的特定错误