我应该始终信任 Django 中的 W0613 pylint 警告,特别是对于以 **kwargs 作为参数的函数



在 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()

最新更新