在 Django 代码上使用 Pylint,我经常收到 W0613 警告。 90% 的情况下,当声明变量但未使用变量时,情况是相关的。但有时我认为不是。
W0613: Unused argument 'kwargs' (unused-argument)
触发警告的示例,处理 500 错误的视图:
def error_500(request, *args, **kwargs):
'''
A 500 error handling view
'''
data = {}
return render(request, '500.html', data)
在上述情况下,如果我们删除 **kwargs,从 Django 2 开始(我记得(,任何 500 错误情况都会导致未处理的异常,这变成了崩溃。
所以我很困惑 Pylint 是否真的了解所有可能出现或不出现的情况。
我应该始终将警告视为真正的警告,因为我的代码缺少某些内容,还是应该知道这些特殊情况并使警告静音?
我注意到,通过使用 Django 的特殊 Pylint 来,这种类型的警告通常不会经常出现(pylint-django(。
但它有时仍然会发生。
这是一个真正的警告 - 你不要使用这个参数。此外,您无法删除它 - 您正在实现一个期望参数存在的接口(尽管您不使用它,其他人可能会(。
幸运的是,pylint 预料到了这一点,并且有一个被忽略的参数的设置......
ignore -argument-names=arg|args|kwargs
这些名称是用于实现接口的名称,但您可能实际上并不需要,因此忽略该特定警告是有意义的。
如果你有一个预期被子类覆盖的方法:
def my(arg1):
return None
.. 您可以通过引发异常来绕过"W0613:未使用的参数'arg1'(未使用的参数(":
def my(arg1):
raise NotImplementedError()