Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我如何告诉派林;它';这是一个变量,不是常数;要停止消息C0103?_Python_Pylint - Fatal编程技术网

Python 我如何告诉派林;它';这是一个变量,不是常数;要停止消息C0103?

Python 我如何告诉派林;它';这是一个变量,不是常数;要停止消息C0103?,python,pylint,Python,Pylint,我的Python 2.6程序中有一个名为“_log”的模块级变量,PyLint对此表示不满: C0103: Invalid name "_log" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$) 读过之后,我理解了它为什么这样做:它认为变量是一个常量,并应用常量regex。然而,我不同意:我认为这是一个变量。我怎么告诉派林,这样它就不会抱怨了?PyLint如何确定它是变量还是常量?它只是将所有模块级变量视为常量吗 # pylint: disable-

我的Python 2.6程序中有一个名为“_log”的模块级变量,PyLint对此表示不满:

C0103: Invalid name "_log" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
读过之后,我理解了它为什么这样做:它认为变量是一个常量,并应用常量regex。然而,我不同意:我认为这是一个变量。我怎么告诉派林,这样它就不会抱怨了?PyLint如何确定它是变量还是常量?它只是将所有模块级变量视为常量吗

# pylint: disable-msg=C0103
将其置于希望忽略这些警告的范围内。您还可以将上面的注释设置为行末注释,以便仅对该行代码禁用消息

确实,pylint将所有模块级变量解释为“常量”

pylint的较新版本将采用这一行

# pylint: disable=C0103

在我看来,进行一点重构可能会有所帮助。Pylint将此视为一个模块,因此不希望看到此级别的变量是合理的。相反,它不会抱怨类或函数中的变量。以下范例似乎很常见,并解决了这个问题:

def main():
    '''Entry point if called as an executable'''
    _log = MyLog()  # . . .

if __name__ == '__main__':
    main()

这样做的好处是,如果您有一些有用的类,我可以在不运行main的情况下导入它们。\uuuu名称是模块的名称,因此“if”失败。

在较新版本的pylint中,该行现在是

# pylint: disable=C0103
启用消息非常简单

# pylint: enable=C0103

如果您在本地禁用文件中的消息,则Pylint将报告另一个不同的警告

Locally disabling invalid-name (C0103) [I:locally-disabled] 
如果您的目的是进行干净的lint运行,那么这肯定是您的目标,否则您为什么要这么麻烦,那么您可以在配置文件中禁用该消息和相应的本地启用消息:

disable=locally-disabled, locally-enabled

如其他答案所示,您可以通过包括以下行来禁用特定PyLint警告(如C0103):

# pylint: disable=C0103
但这会生成
本地禁用无效名称
警告。请注意,如果希望提醒您禁用的警告,则此辅助警告可能很有用。如果要在不更改配置文件的情况下以静默方式禁用警告(这将全局禁用警告),可以使用:

# pylint: disable=I0011,C0103

请注意,PyLint不会发出您正在禁用I0011的警告

您还可以指定一个逗号分隔的“好名字”列表,这些名字在您的pylintrc中始终是允许的,例如:

[BASIC]
good-names=_log

谢谢我还添加了
#pylint:enable msg=C0103
,这样代码的其余部分仍然会被检查。请注意,将其放在代码行的末尾也应该只对这一行禁用此消息(不需要重新启用)。为了在所有Python源文件中禁用此错误消息,我应该将此代码放在何处?
IIRC确实,pylint将所有模块级变量解释为“常量”。
-为什么他们仍然不使用pylint来区分
变量
常量
?有什么技术上的挑战吗?@JaiK嗯,Python中常量和(其他)变量之间没有技术上的区别,所以我想不出更好的方法来区分这两个变量……并非所有程序都是具有主函数的脚本,例如Django urls.py文件。这个变量只存在于函数中。它不是模块级变量。